feedforward
代码:
def feedforward(self, a):
for b, w in zip(self.biases, self.weights):
a = sigmoid(np.dot(w, a) + b)
return a
知识补充:np.dot() 实现向量、矩阵的乘法
疑问:具体执行过程
zip(self.biases, self.weights) 长什么样?
长这样,共三块:
[(array([[1.8928998 ],
[0.27780261],
[0.62579226]]),
array([[-1.5030043 , 0.9752074 , -0.15920991],
[-1.16084287, -0.6642741 , -3.69267419],
[ 0.3134075 , 0.07746114, -1.7835172 ]])),
(array([[-1.54090681],
[ 0.51127026],
[-1.65926419],
[ 2.1043574 ]]),
array([[-0.42022251, 0.69884411, 1.14209824],
[ 3.48988776, -0.34207016, 0.36057217],
[ 1.36683807, 0.01388662, 1.27488846],
[-0.9303635 , -0.10077633, -0.15528635]])),
(array([[1.0806595]]),
array([[1.17643786, 1.30079632, 0.73613014, 0.15250229]]))]
循环过程:
- 第一块:
b:
[[1.8928998 ], # (2, 1)
[0.27780261], # (2, 2)
[0.62579226]] # (2, 3)
w:
[[-1.5030043 , 0.9752074 , -0.15920991], # (1, 1)->(2, 1), (1, 2)->(2, 1), (1, 3)->(2, 1)
[-1.16084287, -0.6642741 , -3.69267419], # (1, 1)->(2, 2), (1, 2)->(2, 2), (1, 3)->(2, 2)
[ 0.3134075 , 0.07746114, -1.7835172 ]] # (1, 1)->(2, 3), (1, 2)->(2, 3), (1, 3)->(2, 3)
执行:np.dot(w, a) + b
声明:假设a:
[[1],
[2],
[3]]
-
in
# a : 3 * 1 a = [[1], [2], [3]] # w : 3 * 3 w = [[-1.5030043 , 0.9752074 , -0.15920991], [-1.16084287, -0.6642741 , -3.69267419], [ 0.3134075 , 0.07746114, -1.7835172 ]] # b : 3 * 1 b = [[1.8928998 ], [0.27780261], [0.62579226]] outcome = np.dot(w, a) + b outcome -
out
array([[ 1.86268057], [-13.28961103], [ -4.25642956]])