【发布时间】:2015-01-09 05:14:59
【问题描述】:
我正在尝试创建不同形状的 np.array 的 np.array。我需要它,因为在下一部分中,我将总结这个大型 np.array 和一些具有相同形状的 delta_array。
像矩阵求和
self.weights += delta_weights
我也将分别处理其中的每个数组。或者例如,我需要将所有数组元素乘以某个数字。
无法弄清楚出了什么问题:(请帮帮我。 代码创建不同形状的随机 np.arrays 列表。 所以这是我的代码:
weights = []
for i in range(1, len(self.layers)):
weights.append(np.random.rand(self.layers[i-1] + 1, self.layers[i]))
print(type(weights))
print([(type(w), w.shape) for w in weights])
#error here with layers = [2,2,1] or [3,3,1] etc
self.weights = np.array(weights)
输出: 对于 self.layers=[2, 2, 1]
<class 'list'>
[(<class 'numpy.ndarray'>, (3, 2)), (<class 'numpy.ndarray'>, (3, 1))]
Traceback (most recent call last):
line 20, in <module>
run()
line 8, in run
net.init_weights()
line 71, in init_weights
self.weights = np.array(weights)
ValueError: could not broadcast input array from shape (3,2) into shape (3)
对于 [2, 3, 1] 一切正常:
<class 'list'>
[(<class 'numpy.ndarray'>, (3, 3)), (<class 'numpy.ndarray'>, (4, 1))]
对于 [3, 3, 1] 与 [2, 2, 1] 的故事相同 - 错误
对于 [3, 7, 1] 或 [3, 2, 1] 一切正常。
//这是机器学习梯度下降的权重矩阵。
【问题讨论】:
-
np.hstack有帮助吗? -
@Evert 否。它会在 layers=[3, 2, 1] 上失败,即使它有效,我也无法在没有额外代码的情况下迭代数组
-
我刚刚在 Python3 中使用 1.8.2 numpy 进行了尝试,
[2,2,1]工作正常。 -
您的
numpy版本是什么? -
@hpaulj 1.9.0 cs624829.vk.me/v624829429/88ed/hqbhQlrTdaM.jpg
标签: python arrays python-3.x numpy multidimensional-array