[英]Python NumPy Array and Matrix Multiplication
我正在阅读“制作自己的神经网络”一书,并按照示例来实现我的第一个神经网络。 我理解了基本概念,特别是这个方程,其中输出是通过输入和权重的矩阵点积来计算的:
X = W * I
其中 X 是应用 Sigmoid 之前的输出,W 是链接权重,I 是输入。
现在在书中,他们确实有一个函数,可以将这个输入作为一个数组,然后将该数组转换为二维数组。 我的理解是,X 的值是这样计算的,基于:
W = [0.1, 0.2, 0.3
0.4, 0.5, 0.6
0.7, 0.8, 0.9]
I = [1
2
3]
因此,如果我现在为 [1,2,3] 之类的输入传入一个数组,为什么我需要执行以下操作才能将其转换为本书中所做的二维数组:
inputs = numpy.array(inputs, ndmin=2).T
有任何想法吗?
您在此处输入的是一维列表(或一维数组):
I = [1, 2, 3]
这个一维数组背后的想法如下:如果这些数字表示花瓣的宽度(厘米)、长度和重量(以克为单位):您的花瓣将有1cm
的宽度、 2cm
的长度和一个重量3g
。
将输入I
转换为二维数组对于两件事来说是必要的:
numpy.array(inputs)
将此列表转换为 NumPy 数组将产生一个形状为 (3,) 的数组,第二维未定义。 通过设置ndmin=2
,它强制维度为 (3, 1),这样就不会产生任何与 NumPy 相关的问题,例如在使用矩阵乘法等时。 因此,当您执行inputs = numpy.array(inputs, ndmin=2).T
,您最终会得到:
array([[1], # width
[2], # length
[3]]) # weight
而不是:
array([1, 2, 3])
希望它使事情更清楚一些!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.