1 回答

TA貢獻(xiàn)1817條經(jīng)驗(yàn) 獲得超6個(gè)贊
您使用創(chuàng)建的 numpy 數(shù)組np.array([0.2])有一個(gè)形狀(1,),而您的權(quán)重?cái)?shù)組有一個(gè)形狀(1,1)。雖然它們存儲相同數(shù)量的數(shù)據(jù),但 numpy 將它們視為不同的形狀。您可以通過執(zhí)行以下操作來解決此問題:
代替:
listOfNumpyArrays = [np.array([0.2]),np.array([0.2])]
使用:
listOfNumpyArrays = [np.empty(shape = (1,1), dtype = np.float32), np.empty(shape = (1,1), dtype = np.float32)]
listOfNumpyArrays[0][0] = 0.2
listOfNumpyArrays[1][0] = 0.2
無關(guān)的說明:
在這一行中:
listOfNumpyArrays1 = listOfNumpyArrays
看起來您想創(chuàng)建兩個(gè)不同的 numpy 數(shù)組列表,它們被初始化為相同的值。listOfNumpyArrays1但是,實(shí)際上將引用與 相同的列表listOfNumpyArrays。因此,當(dāng)您執(zhí)行set_weightson時(shí)listOfNumpyArrays1,它也會修改listOfNumpyArrays。要在創(chuàng)建兩個(gè)不同的列表時(shí)將它們初始化為相同的值,可以使用以下代碼:
listOfNumpyArrays1 = [np.copy(listOfNumpyArrays[0]), np.copy(listOfNumpyArrays[1])]
np.copy創(chuàng)建一個(gè)新數(shù)組,它是您傳遞的數(shù)組的副本。這可以使用列表理解以更 pythonic 的方式編寫,如下所示:
listOfNumpyArrays1 = [np.copy(x) for x in listOfNumpyArrays]
添加回答
舉報(bào)