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]
添加回答
举报