我试着做一个函数,得到这样一个矩阵:
[[1, 0, 0, 0], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]]
(但是用40行40个数字代替4*4)
我现在得到的是:
def create_weights_hid_con():
weights_list = []
weight_vector = []
for i in range(0, 40):
weight_vector.append(0.0)
for i in range(0, 40):
weights_list.append(weight_vector)
for i in range(0, len(weights_list)):
weights_list[i][i] = 1.0
return weights_list
我以为这样可以:
weights_list[0][0] = 1.0
weights_list[1][1] = 1.0
weights_list[2][2] = 1.0
etc.
但是相反,它也做了这两者之间的所有事情,这就产生了这样一个矩阵:
[[1, 1, 1, 1], [1, 1, 1, 1], [1, 1, 1, 1], [1, 1, 1, 1]]
所以我的问题是:我该怎么做才能使它只改变第一个和第二个索引相同的数字?(例如,更改权重列表[0][0],但不更改权重列表[0][1])。你知道吗
您的问题是,您反复存储同一个列表:
所以,当你浏览它时,这些变化会影响每一个列表。如果强制复制,它将起作用,例如:
也不清楚为什么每次都要附加到权重向量。简单地将其初始化为:
尽管整批货物可以概括为一份清单:
这是因为在执行
append
操作时并没有添加新列表,而是添加了对相同列表的引用。无论如何,这是一种有点过于复杂的方式来做你想做的事情:我看到你在试图构造身份矩阵。看看numpy.identity():例如:
如果您仍然想要一个列表,只需使用numpy.tolist()。你知道吗
相关问题 更多 >
编程相关推荐