日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

MXNet——symbol

發布時間:2025/3/15 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MXNet——symbol 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

參考資料:有基礎(Pytorch/TensorFlow基礎)mxnet+gluon快速入門

symbol

symbol 是一個重要的概念,可以理解為符號,就像我們平時使用的代數符號 x,y,z 一樣。一個簡單的類比,一個函數 \(f(x) = x^{2}\),符號 x 就是 symbol,而具體 x 的值就是 ndarray,關于 symbol 的是 mxnet.sym,具體可參照官方API文檔

基本操作

  • 使用 mxnet.sym.Variable() 傳入名稱可建立一個 symbol
  • 使用 mxnet.viz.plot_network(symbol=) 傳入 symbol 可以繪制運算圖
import os os.environ["PATH"] += os.pathsep + 'C:/Program Files (x86)/Graphviz/bin/' # 解決 path 錯誤 import mxnet as mxa = mx.sym.Variable('a') b = mx.sym.Variable('b') c = mx.sym.add_n(a,b,name="c") mx.viz.plot_network(symbol=c)

帶入 ndarray

使用 mxnet.sym.bind() 方法可以獲得一個帶入操作數的對象,再使用 forward() 方法可運算出數值

x = c.bind(ctx=mx.cpu(),args={"a": mx.nd.ones(5),"b":mx.nd.ones(5)}) result = x.forward() print(result) [ [2. 2. 2. 2. 2.] <NDArray 5 @cpu(0)>]

mxnet 的數據載入

深度學習中數據的載入方式非常重要,mxnet 提供了 mxnet.io 的一系列 dataiter 用于處理數據載入,詳細可參照官方API文檔。同時,動態圖接口gluon 也提供了 mxnet.gluon.data 系列的 dataiter 用于數據載入,詳細可參照官方API文檔

mxnet.io 數據載入

mxnet.io的數據載入核心是 mxnet.io.DataIter 類及其派生類,例如 ndarray 的 iter:NDArrayIter

  • 參數 data:傳入一個(名稱-數據)的數據 dict
  • 參數 label:傳入一個(名稱-標簽)的標簽 dict
  • 參數 batch_size:傳入 batch 大小
dataset = mx.io.NDArrayIter(data={'data':mx.nd.ones((10,5))},label={'label':mx.nd.arange(10)},batch_size=5) for i in dataset: print(i) print(i.data,type(i.data[0])) print(i.label,type(i.label[0])) DataBatch: data shapes: [(5, 5)] label shapes: [(5,)] [ [[1. 1. 1. 1. 1.][1. 1. 1. 1. 1.][1. 1. 1. 1. 1.][1. 1. 1. 1. 1.][1. 1. 1. 1. 1.]] <NDArray 5x5 @cpu(0)>] <class 'mxnet.ndarray.ndarray.NDArray'> [ [0. 1. 2. 3. 4.] <NDArray 5 @cpu(0)>] <class 'mxnet.ndarray.ndarray.NDArray'> DataBatch: data shapes: [(5, 5)] label shapes: [(5,)] [ [[1. 1. 1. 1. 1.][1. 1. 1. 1. 1.][1. 1. 1. 1. 1.][1. 1. 1. 1. 1.][1. 1. 1. 1. 1.]] <NDArray 5x5 @cpu(0)>] <class 'mxnet.ndarray.ndarray.NDArray'> [ [5. 6. 7. 8. 9.] <NDArray 5 @cpu(0)>] <class 'mxnet.ndarray.ndarray.NDArray'>

gluon.data 數據載入

gluon 的數據 API 幾乎與 pytorch 相同,均是 Dataset+DataLoader 的方式:

  • Dataset:存儲數據,使用時需要繼承該基類并重載 __len__(self) 和 __getitem__(self,idx) 方法
  • DataLoader:將 Dataset 變成能產生 batch 的可迭代對象
dataset = mx.gluon.data.ArrayDataset(mx.nd.ones((10,5)),mx.nd.arange(10)) loader = mx.gluon.data.DataLoader(dataset,batch_size=5) for i,data in enumerate(loader): print(i) print(data) 0 [ [[1. 1. 1. 1. 1.][1. 1. 1. 1. 1.][1. 1. 1. 1. 1.][1. 1. 1. 1. 1.][1. 1. 1. 1. 1.]] <NDArray 5x5 @cpu(0)>, [0. 1. 2. 3. 4.] <NDArray 5 @cpu(0)>] 1 [ [[1. 1. 1. 1. 1.][1. 1. 1. 1. 1.][1. 1. 1. 1. 1.][1. 1. 1. 1. 1.][1. 1. 1. 1. 1.]] <NDArray 5x5 @cpu(0)>, [5. 6. 7. 8. 9.] <NDArray 5 @cpu(0)>] class TestSet(mx.gluon.data.Dataset):def __init__(self): self.x = mx.nd.zeros((10,5)) self.y = mx.nd.arange(10) def __getitem__(self,i): return self.x[i],self.y[i] def __len__(self): return 10 for i,data in enumerate(mx.gluon.data.DataLoader(TestSet(),batch_size=5)): print(data) [ [[0. 0. 0. 0. 0.][0. 0. 0. 0. 0.][0. 0. 0. 0. 0.][0. 0. 0. 0. 0.][0. 0. 0. 0. 0.]] <NDArray 5x5 @cpu(0)>, [[0.][1.][2.][3.][4.]] <NDArray 5x1 @cpu(0)>] [ [[0. 0. 0. 0. 0.][0. 0. 0. 0. 0.][0. 0. 0. 0. 0.][0. 0. 0. 0. 0.][0. 0. 0. 0. 0.]] <NDArray 5x5 @cpu(0)>, [[5.][6.][7.][8.][9.]] <NDArray 5x1 @cpu(0)>]

網絡搭建

mxnet 網絡搭建

mxnet 網絡搭建類似于 TensorFlow,使用 symbol 搭建出網絡,再用一個 module 封裝

data = mx.sym.Variable('data') # layer1 conv1 = mx.sym.Convolution(data=data, kernel=(5,5), num_filter=32,name="conv1") relu1 = mx.sym.Activation(data=conv1,act_type="relu",name="relu1") pool1 = mx.sym.Pooling(data=relu1,pool_type="max",kernel=(2,2),stride=(2,2),name="pool1") # layer2 conv2 = mx.sym.Convolution(data=pool1, kernel=(3,3), num_filter=64,name="conv2") relu2 = mx.sym.Activation(data=conv2,act_type="relu",name="relu2") pool2 = mx.sym.Pooling(data=relu2,pool_type="max",kernel=(2,2),stride=(2,2),name="pool2") # layer3 fc1 = mx.symbol.FullyConnected(data=mx.sym.flatten(pool2), num_hidden=256,name="fc1") relu3 = mx.sym.Activation(data=fc1, act_type="relu",name="relu3") # layer4 fc2 = mx.symbol.FullyConnected(data=relu3, num_hidden=10,name="fc2") out = mx.sym.SoftmaxOutput(data=fc2, label=mx.sym.Variable("label"),name='softmax') mxnet_model = mx.mod.Module(symbol=out,label_names=["label"],context=mx.gpu()) mx.viz.plot_network(symbol=out)

福利:剛剛發現一個解決路徑錯誤的方法:只需要將 *\Anaconda3\Library\bin\graphviz 添加到 Path 環境變量之下即可 (安裝后記得重啟,環境變量修改才可以生效,調用庫,即可成功)!

轉載于:https://www.cnblogs.com/q735613050/p/9315504.html

總結

以上是生活随笔為你收集整理的MXNet——symbol的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 中文亚洲字幕 | jizz日本女人 | 日韩一级性 | 国产资源在线视频 | 欧美一区二区久久 | 成人必看www. | 欧美乱妇在线观看 | 欧美国产另类 | 免费欧美视频 | 在线a| 日韩资源在线观看 | 巨乳动漫美女 | 欧美久久久久久久久中文字幕 | 日韩毛片一区二区三区 | 国产欧美一区二区精品久久久 | 十大污网站 | 欧美自拍一区 | 久久精品无码专区 | 色欲久久久天天天综合网精品 | 久久久黄色大片 | 亚洲欧美在线视频 | a视频免费 | 日韩精品一区二区电影 | 亚洲成人18 | 美日韩丰满少妇在线观看 | 国产一区亚洲二区 | 一本色道久久综合亚洲精品小说 | 日韩在线观看免费网站 | 色站在线 | 不卡视频在线播放 | 日日噜 | www.国产在线视频 | 亚洲女同一区 | 超碰777 | 中文字幕一区二区视频 | 中文字幕欧美在线 | 欧美人和黑人牲交网站上线 | 91成人免费在线观看视频 | 国产一区二区三区网站 | 亚洲第一男人天堂 | 99视频精品 | 国产精品腿扒开做爽爽爽挤奶网站 | 亚洲一区精品在线 | 日本69熟 | 国产97色 | 国产精品久久久久久久一区二区 | 天天夜夜人人 | 无码人妻一区二区三区精品视频 | 337p粉嫩大胆色噜噜噜 | 国产夫妻性生活 | 亚洲人和日本人hd | www.激情网 | 国产成人精品一区二区三区四区 | 久久久无码一区二区三区 | 免费av高清 | 依依激情网 | 超碰成人免费在线 | 9.1成人看片免费版 日韩经典在线 | 国产第99页 | 欧美香蕉在线 | 中文字幕+乱码+中文乱码91 | 少妇又紧又深又湿又爽视频 | 欧美午夜不卡 | 粉嫩av一区二区夜夜嗨 | 黄色污污网站在线观看 | 久久久久久久久久久av | 亚洲精品久久久狠狠狠爱 | 国产人妻人伦精品1国产盗摄 | 欧美aa视频 | 国产午夜精品一区二区理论影院 | 国内一区二区 | 狠狠躁日日躁夜夜躁 | 91视频在线网站 | 亚洲高清资源 | 国产精品乱码久久久久久久久 | 在线观看色网 | 成人中文字幕+乱码+中文字幕 | 久久青青操 | 日产精品久久久一区二区 | 免费观看成年人视频 | 成年人三级视频 | 欧美日韩精品免费 | 澳门久久 | 国产精品久久久久久久毛片 | 麻豆视频免费 | 大尺度网站在线观看 | 99久久久国产精品无码免费 | 国产香蕉在线 | 日本wwww色 | 天天射天天色天天干 | 91中文字幕| www激情| 好吊一二三区 | 亚洲自拍激情 | 国产传媒一区二区 | 国产精品一区二区久久 | 欧美三级黄色 | 色啪视频 | 国产精品福利视频 |