1 回答

TA貢獻1817條經驗 獲得超6個贊
您使用創建的 numpy 數組np.array([0.2])有一個形狀(1,),而您的權重數組有一個形狀(1,1)。雖然它們存儲相同數量的數據,但 numpy 將它們視為不同的形狀。您可以通過執行以下操作來解決此問題:
代替:
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
無關的說明:
在這一行中:
listOfNumpyArrays1 = listOfNumpyArrays
看起來您想創建兩個不同的 numpy 數組列表,它們被初始化為相同的值。listOfNumpyArrays1但是,實際上將引用與 相同的列表listOfNumpyArrays。因此,當您執行set_weightson時listOfNumpyArrays1,它也會修改listOfNumpyArrays。要在創建兩個不同的列表時將它們初始化為相同的值,可以使用以下代碼:
listOfNumpyArrays1 = [np.copy(listOfNumpyArrays[0]), np.copy(listOfNumpyArrays[1])]
np.copy創建一個新數組,它是您傳遞的數組的副本。這可以使用列表理解以更 pythonic 的方式編寫,如下所示:
listOfNumpyArrays1 = [np.copy(x) for x in listOfNumpyArrays]
添加回答
舉報