日韩性视频-久久久蜜桃-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| 密乳av | 日本国产网站 | gav久久 | 变态另类一区二区 | 狠狠综合久久av一区二区 | 国产一级自拍视频 | 欧美xxx视频 | 精品视频在线一区二区 | 亚洲二区精品 | 芭乐视频色 | 日韩欧美国产网站 | 国产一级二级三级在线观看 | 中国一级特黄毛片大片 | 69精品 | 久久中文字幕人妻熟av女蜜柚m | aaaaa级少妇高潮大片免费看 | 国产高潮失禁喷水爽到抽搐 | 国产一区二区成人 | bt天堂新版中文在线地址 | free欧美性69护士呻吟 | 青娱乐福利视频 | 视频在线观看一区 | 男人av在线| 日本一区二区三区四区五区 | 深夜福利亚洲 | eeuss一区 | 成人免费毛片入口 | 免费日本在线 | 久久中文字幕网 | 欧美精品色婷婷五月综合 | 中文字幕亚洲精品在线观看 | 极品毛片| 国产+日韩+欧美 | 中文字幕av资源 | 日日麻批免费视频播放 | 国产真实交换夫妇视频 | 欧美美女爱爱视频 | 激情亚洲| 欧美一区二区三区在线免费观看 | 一级丰满大乳hd高清 | 国产第一页屁屁影院 | 国产精品视频成人 | 久久久久久免费观看 | 中文字幕无码乱人伦 | 国产精品高清在线观看 | 碰超在线| 亚洲AV第二区国产精品 | 九色视频国产 | 在线观看免费中文字幕 | 反差在线观看免费版全集完整版 | 天天做天天摸天天爽天天爱 | 日日夜夜操av| 亚洲成人黄色在线 | 亚洲午夜激情 | 精品乱码一区内射人妻无码 | 国产做爰全免费的视频软件 | 久久精品一本 | 日本久热 | 免费av小说 | 国产免费高清视频 | 亚洲无人禁区 | 乱色专区 | 少妇精品一区二区三区 | jizzjizz日本人| 黄色av网站免费 | 人操人| 国产精品图片 | 在线超碰 | 国产精品15p | 女人黄色片 | 欧美在线一区二区 | aaa国产| 麻豆亚洲精品 | 少妇影院在线观看 | 中文字幕av在线免费 | 日韩五十路 | 国产黄 | 黄色a在线观看 | np视频 | 国产欧美一区二区三区在线老狼 | 制服丝袜av在线 | 午夜簧片 | 成人αv| 国产精品视频在线看 | 插插插日日日 | 色婷婷综合久久久久中文一区二区 | 色综合久久88色综合天天6 | 国产精品一区二区三区在线看 | 国产原创一区 | 久久久久久无码精品人妻一区二区 | 日本激情视频在线观看 | 爆操91| 日韩三级小视频 | 欧美一卡 | 老女人做爰全过程免费的视频 | 久久久久亚洲av成人毛片韩 | 日韩欧美亚洲一区二区 | 在线播放91 |