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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人工智能 > pytorch >内容正文

pytorch

mxnet深度学习(KVS)

發布時間:2025/3/15 pytorch 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mxnet深度学习(KVS) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

mxnet深度學習(KVS)


分布式的鍵值對的存儲(Ditstributed Key-value Store)

KVStore是一個數據共享的地方。我們可以把它認為他是一個簡單的類橫跨不同的設備(GPUS和不同的機器),在這里設備將會壓入和提取數據。


初始化

讓我們考慮一個簡單的例子:初始化一個(int,NDAarray)對用來存儲,然后把它的值再提取出來。 >>> kv = mx.kv.create('local') # create a local kv store. >>> shape = (2,3) >>> kv.init(3, mx.nd.ones(shape)*2) >>> a = mx.nd.zeros(shape) >>> kv.pull(3, out = a) >>> print a.asnumpy() [[ 2. 2. 2.] [ 2. 2. 2.]] 我們把一個2x3的矩陣存在序號為3的地方,并把它從kv里面取出來。


壓入,聚合,更新

對于被初始化的鍵,我們可以壓入一個新值用相同的模型。 >>> kv.push(3, mx.nd.ones(shape)*8) >>> kv.pull(3, out = a) # pull out the value >>> print a.asnumpy() [[ 8. 8. 8.] [ 8. 8. 8.]] 用來壓入的數據可以來自于任何設備上。另外,我們可以壓入幾個值在同一個鍵上,在這里KVStore將首先把這些值加起來然后把這些聚合的值給壓入。 >>> gpus = [mx.gpu(i) for i in range(4)] >>> b = [mx.nd.ones(shape, gpu) for gpu in gpus] >>> kv.push(3, b) >>> kv.pull(3, out = a) >>> print a.asnumpy() [[ 4. 4. 4.] [ 4. 4. 4.]] 這里,我們生成了4個全為1的矩陣從4個gpu里面,然后把他們壓入到同一個鍵里面,因為被壓入4次,相當于被求和了4次,所以顯示的結果是每個元素都為4. 對于每次壓入,KVStore通過存儲在updater里面的值,把壓入值進行結合。默認的updater是ASSIGN,我們能取代默認的(ASSIGN)來控制控制數據的融合方式。 >>> def update(key, input, stored): >>> print "update on key: %d" % key >>> stored += input * 2 >>> kv._set_updater(update) >>> kv.pull(3, out=a) >>> print a.asnumpy() [[ 4. 4. 4.] [ 4. 4. 4.]] >>> kv.push(3, mx.nd.ones(shape)) update on key: 3 >>> kv.pull(3, out=a) >>> print a.asnumpy() [[ 6. 6. 6.] [ 6. 6. 6.]]


提取

我們早已看到怎么提取一個簡單的鍵值對了。為了簡化提取的過程,我們可以在一次調用中提取值到幾個設備里面 >>> b = [mx.nd.ones(shape, gpu) for gpu in gpus] >>> kv.pull(3, out = b) >>> print b[1].asnumpy() [[ 6. 6. 6.] [ 6. 6. 6.]] 處理一列的鍵值對 所有到目前為止的操作都是涉及了一個單一的鍵值對。KVStore也提供了一個接口對于一列的鍵值對。對于一個單一的設備:
>>> keys = [5, 7, 9] >>> kv.init(keys, [mx.nd.ones(shape)]*len(keys)) >>> kv.push(keys, [mx.nd.ones(shape)]*len(keys)) update on key: 5 update on key: 7 update on key: 9 >>> b = [mx.nd.zeros(shape)]*len(keys) >>> kv.pull(keys, out = b) >>> print b[1].asnumpy() [[ 3. 3. 3.] [ 3. 3. 3.]] 對于多重設備來說 >>> b = [[mx.nd.ones(shape, gpu) for gpu in gpus]] * len(keys) >>> kv.push(keys, b) update on key: 5 update on key: 7 update on key: 9 >>> kv.pull(keys, out = b) >>> print b[1][1].asnumpy() [[ 11. 11. 11.] [ 11. 11. 11.]]

總結

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

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