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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

python实现mini-batch_Mini-Batch 、Momentum、Adam算法的实现

發(fā)布時間:2025/3/8 python 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python实现mini-batch_Mini-Batch 、Momentum、Adam算法的实现 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

def random_mini_batches(X,Y,mini_batch_size=64,seed=0):"""從(X,Y)中創(chuàng)建一個隨機(jī)的mini-batch列表

參數(shù):

X - 輸入數(shù)據(jù),維度為(輸入節(jié)點(diǎn)數(shù)量,樣本的數(shù)量)

Y - 對應(yīng)的是X的標(biāo)簽,【1 | 0】(藍(lán)|紅),維度為(1,樣本的數(shù)量)

mini_batch_size - 每個mini-batch的樣本數(shù)量

返回:

mini-bacthes - 一個同步列表,維度為(mini_batch_X,mini_batch_Y)"""np.random.seed(seed)#指定隨機(jī)種子

m = X.shape[1]

mini_batches=[]#第一步:打亂順序

permutation = list(np.random.permutation(m)) #它會返回一個長度為m的隨機(jī)數(shù)組,且里面的數(shù)是0到m-1

shuffled_X = X[:,permutation] #將每一列的數(shù)據(jù)按permutation的順序來重新排列。

shuffled_Y = Y[:,permutation].reshape((1,m))"""#博主注:

#如果你不好理解的話請看一下下面的偽代碼,看看X和Y是如何根據(jù)permutation來打亂順序的。

x = np.array([[1,2,3,4,5,6,7,8,9],

[9,8,7,6,5,4,3,2,1]])

y = np.array([[1,0,1,0,1,0,1,0,1]])

random_mini_batches(x,y)

permutation= [7, 2, 1, 4, 8, 6, 3, 0, 5]

shuffled_X= [[8 3 2 5 9 7 4 1 6]

[2 7 8 5 1 3 6 9 4]]

shuffled_Y= [[0 1 0 1 1 1 0 1 0]]"""

#第二步,分割

num_complete_minibatches = math.floor(m / mini_batch_size) #把你的訓(xùn)練集分割成多少份,請注意,如果值是99.99,那么返回值是99,剩下的0.99會被舍棄

for k inrange(0,num_complete_minibatches):

mini_batch_X= shuffled_X[:,k * mini_batch_size:(k+1)*mini_batch_size]

mini_batch_Y= shuffled_Y[:,k * mini_batch_size:(k+1)*mini_batch_size]"""#博主注:

#如果你不好理解的話請單獨(dú)執(zhí)行下面的代碼,它可以幫你理解一些。

a = np.array([[1,2,3,4,5,6,7,8,9],

[9,8,7,6,5,4,3,2,1],

[1,2,3,4,5,6,7,8,9]])

k=1

mini_batch_size=3

print(a[:,1*3:(1+1)*3]) #從第4列到第6列

'''

[[4 5 6]

[6 5 4]

[4 5 6]]

'''

k=2

print(a[:,2*3:(2+1)*3]) #從第7列到第9列

'''

[[7 8 9]

[3 2 1]

[7 8 9]]

'''

#看一下每一列的數(shù)據(jù)你可能就會好理解一些"""mini_batch=(mini_batch_X,mini_batch_Y)

mini_batches.append(mini_batch)#如果訓(xùn)練集的大小剛好是mini_batch_size的整數(shù)倍,那么這里已經(jīng)處理完了

#如果訓(xùn)練集的大小不是mini_batch_size的整數(shù)倍,那么最后肯定會剩下一些,我們要把它處理了

if m % mini_batch_size !=0:#獲取最后剩余的部分

mini_batch_X = shuffled_X[:,mini_batch_size *num_complete_minibatches:]

mini_batch_Y= shuffled_Y[:,mini_batch_size *num_complete_minibatches:]

mini_batch=(mini_batch_X,mini_batch_Y)

mini_batches.append(mini_batch)return mini_batches

總結(jié)

以上是生活随笔為你收集整理的python实现mini-batch_Mini-Batch 、Momentum、Adam算法的实现的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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