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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 人工智能 > pytorch >内容正文

pytorch

mxnet深度学习(NDArray)

發(fā)布時(shí)間:2025/3/15 pytorch 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mxnet深度学习(NDArray) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

mxnet深度學(xué)習(xí)(NDArray)

MXNet里面的3個(gè)主要的概念:

NDArray:NDArray提供了矩陣和張量(tensor)運(yùn)算在CPU和GPU上,通過使用并行運(yùn)算的技術(shù)。

Symbol:Symbol使得定義一個(gè)神經(jīng)網(wǎng)絡(luò)變得更加簡(jiǎn)單,并且自動(dòng)提供差異化(用于區(qū)別別的神經(jīng)網(wǎng)絡(luò))。

KVStore: KVStore ?提供數(shù)據(jù)同步在有多個(gè)GPU和CPU的機(jī)器上。

NDArray(Numpy風(fēng)格的,可以在CPU和GPU運(yùn)算的張量計(jì)算模塊)

NDArray與numpy.ndarray相似,但是它多了以下兩點(diǎn):

1.多個(gè)設(shè)備支持:所有的操作可以支持GPU和CPU。

2.自動(dòng)并行:所有的操作都是以并行的方式進(jìn)行的。


創(chuàng)建和初始化

我們可以創(chuàng)建NDArray在CPU和GPU上:

>>> import mxnet as mx >>> a = mx.nd.empty((2, 3)) # create a 2-by-3 matrix on cpu >>> b = mx.nd.empty((2, 3), mx.gpu()) # create a 2-by-3 matrix on gpu 0 >>> c = mx.nd.empty((2, 3), mx.gpu(2)) # create a 2-by-3 matrix on gpu 2 >>> c.shape # get shape (2L, 3L) >>> c.context # get device info gpu(2)
它們可以初始化通過不同的方式

>>> a = mx.nd.zeros((2, 3)) # create a 2-by-3 matrix filled with 0 >>> b = mx.nd.ones((2, 3)) # create a 2-by-3 matrix filled with 1 >>> b[:] = 2 # set all elements of b to 2

我們可以把值從一個(gè)NDArray到另一個(gè),即使它們?cè)诓煌脑O(shè)備上

>>> a = mx.nd.ones((2, 3)) >>> b = mx.nd.zeros((2, 3), mx.gpu()) >>> a.copyto(b) # copy data from cpu to gpu 我們可以把NDArray轉(zhuǎn)換成numpy.ndarray

>>> a = mx.nd.ones((2, 3)) >>> b = a.asnumpy() >>> type(b) <type 'numpy.ndarray'> >>> print b [[ 1. 1. 1.][ 1. 1. 1.]]
反之亦然

>>> import numpy as np >>> a = mx.nd.empty((2, 3)) >>> a[:] = np.random.uniform(-0.1, 0.1, a.shape) >>> print a.asnumpy() [[-0.06821112 -0.03704893 0.06688045][ 0.09947646 -0.07700162 0.07681718]]</pre>

基礎(chǔ)操作

元素級(jí)操作是默認(rèn)的,NDArray執(zhí)行的是元素級(jí)的操作(這和matlab里面和我們線性代數(shù)里面學(xué)的不一樣)

>>> a = mx.nd.ones((2, 3)) * 2 >>> b = mx.nd.ones((2, 3)) * 4 >>> print b.asnumpy() [[ 4. 4. 4.][ 4. 4. 4.]] >>> c = a + b >>> print c.asnumpy() [[ 6. 6. 6.][ 6. 6. 6.]] >>> d = a * b >>> print d.asnumpy() [[ 8. 8. 8.][ 8. 8. 8.]]
如果兩個(gè)NDArray在不同的設(shè)備上,我們需要顯示的把他們移到同一個(gè)設(shè)備上。

下面的代碼顯示了在GPU 0操作的例子

>>> a = mx.nd.ones((2, 3)) * 2 >>> b = mx.nd.ones((2, 3), mx.gpu()) * 3 >>> c = a.copyto(mx.gpu()) * b >>> print c.asnumpy() [[ 6. 6. 6.][ 6. 6. 6.]]

加載和保存

下面有兩個(gè)方式去保存(加載)數(shù)據(jù)從磁盤上。第一個(gè)方式是pickle,NDArray是pickle compatible,意味著你可以簡(jiǎn)單的把NDArray進(jìn)行pickle,就像在numpy.ndarray里面一樣。

>>> import mxnet as mx >>> import pickle as pkl>>> a = mx.nd.ones((2, 3)) * 2 >>> data = pkl.dumps(a) >>> b = pkl.loads(data) >>> print b.asnumpy() [[ 2. 2. 2.][ 2. 2. 2.]]
第二個(gè)方式是直接把一列NDArray以二進(jìn)制的格式存到磁盤中(這時(shí)就不用pickle了)

>>> a = mx.nd.ones((2,3))*2 >>> b = mx.nd.ones((2,3))*3 >>> mx.nd.save('mydata.bin', [a, b]) >>> c = mx.nd.load('mydata.bin') >>> print c[0].asnumpy() [[ 2. 2. 2.][ 2. 2. 2.]] >>> print c[1].asnumpy() [[ 3. 3. 3.][ 3. 3. 3.]]
我們還可以存一個(gè)字典(dict)

>>> mx.nd.save('mydata.bin', {'a':a, 'b':b}) >>> c = mx.nd.load('mydata.bin') >>> print c['a'].asnumpy() [[ 2. 2. 2.][ 2. 2. 2.]] >>> print c['b'].asnumpy() [[ 3. 3. 3.][ 3. 3. 3.]]
另外,如果設(shè)置了分布式系統(tǒng)比如S3和HDFS,我們可以直接去保存和加載它們(一般都沒有用)

>>> mx.nd.save('s3://mybucket/mydata.bin', [a,b]) >>> mx.nd.save('hdfs///users/myname/mydata.bin', [a,b])</pre>

用自動(dòng)并行運(yùn)算?

NDArray可以自動(dòng)并行執(zhí)行操作。這是需要的,當(dāng)我們需要使用多個(gè)資源如CPU,GPU,和CPU-to-GPU的內(nèi)存帶寬。 ? 舉個(gè)栗子,如果我們寫a+=1在b+=1的后面,a是在CPU而b是在GPU,然后我們接下去想并行執(zhí)行它們來提高效率。此外,在CPU和GPU之間進(jìn)行數(shù)據(jù)拷貝的開銷是很昂貴的,所以我們希望把它們和其他的運(yùn)算一起并行計(jì)算。

然而,通過眼睛來找可以并行運(yùn)算的語句是比較累人的。在下面的例子里面,a+=1和c*=3是可以被并行執(zhí)行的,但是a+=1和b*=3必須順序執(zhí)行。

a = mx.nd.ones((2,3)) b = a c = a.copyto(mx.cpu()) a += 1 b *= 3 c *= 3
幸運(yùn)的是,MXNet在確保運(yùn)行正確的情況下,可以自動(dòng)解決依賴問題。換句話說,我們可以寫程序就像一個(gè)單一的線程,MXNet將會(huì)自動(dòng)派遣它們到多個(gè)設(shè)備,如具有多個(gè)GPU的顯卡,和多臺(tái)機(jī)器上。


這是通過惰性評(píng)估來實(shí)現(xiàn)的。任何我們寫的操作都是通過一個(gè)中間引擎來發(fā)行的,然后返回。舉個(gè)栗子,如果我們運(yùn)行a+=1,它在執(zhí)行加法操作后立即返回這個(gè)引擎。這個(gè)異步性允許我們發(fā)出更多的操作給引擎,所以它可以決定讀寫依賴并找到最好的并行執(zhí)行它們的方式。


實(shí)際的計(jì)算是當(dāng)我們想把結(jié)果拷貝到其它地方的時(shí)候完成的,比如print a.asnumpy() (復(fù)制到終端)或者mx.nd.save([a])。因此,如果我們想去寫高效的并行的代碼,我們只需要延緩請(qǐng)求結(jié)果的時(shí)間。



總結(jié)

以上是生活随笔為你收集整理的mxnet深度学习(NDArray)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 欧美少妇喷水 | 色呦呦在线 | 中文字字幕 | 日韩精品高清在线观看 | 天天干天天搞天天射 | 蜜桃在线一区二区 | 国产精品区在线观看 | 国产精品一区二区免费 | 男人操女人的免费视频 | 中文字幕av第一页 | 都市激情亚洲综合 | 中文字幕麻豆 | 奇米第四色在线 | 综合色区| 日本大尺度做爰呻吟舌吻 | 日韩黄色网址 | 日日夜夜狠狠爱 | 欧美乱大交xxxxx春色视频 | 亚洲第一在线播放 | 日韩在线精品视频 | 免费高清欧美大片在线观看 | 日韩一区在线免费观看 | 日本高清视频一区二区三区 | 超碰999 | 国产精品又黄又爽又色无遮挡 | 成年人免费在线观看 | 天天射天天色天天干 | 五月婷婷视频在线观看 | 亚洲色精品三区二区一区 | 欧美激情3p | 制服丝袜av电影 | 国产精品一区二区久久毛片 | 久久人人干 | 欧美日韩不卡在线 | 乳女教师の诱惑julia | 黄色激情视频网站 | 免费操| 男人天堂国产 | 网红av在线| 亚洲 欧美 激情 另类 校园 | av亚洲在线观看 | 欧美日韩国产免费 | 欧美99| 日韩少妇内射免费播放18禁裸乳 | 人人爽人人射 | 午夜性激情 | 国产精品免费av一区二区 | 永久视频在线观看 | 在线看片你懂得 | 4虎最新网址 | 亚洲日本一区二区 | 老司机午夜免费精品视频 | 婷婷激情社区 | 足疗店女技师按摩毛片 | 欧美一区二区三区大屁股撅起来 | 久久好色 | 国产精品久久久一区 | 精品一区二区三区视频 | 美女被c出水| 美女18网站| 哪里看毛片| 超碰2| 毛片av在线观看 | 国产精品作爱 | 国产夫妻性生活视频 | 天天夜夜操 | 特色特色大片在线 | 玖玖爱国产 | 中国老熟妇自拍hd发布 | 在线视频欧美一区 | 日本三级视频在线播放 | 91av看片 | 一区二区三区成人 | 全黄一级裸体片 | 在线看片网址 | 日韩精品无码一本二本三本色 | 亚洲巨乳av| 日韩亚洲影院 | 亚洲欧美一区二区激情 | 国产精品久久久久久久久免费软件 | 公侵犯人妻一区二区 | 成人av免费播放 | 美女靠逼app | 天天舔天天爽 | 国偷自产av一区二区三区麻豆 | av一级大片 | 一本色道久久88亚洲精品综合 | 玖玖色资源 | 欧美性猛片aaaaaaa做受 | 精品亚洲国产成av人片传媒 | 青青草久久久 | 四虎影院一区 | 成人在线视频一区二区三区 | 亚洲精华液一区二区 | 亚洲com | 在线观看毛片视频 | 全程偷拍露脸中年夫妇 | 欧美视频一级 | 亚洲欧洲精品视频 |