我最近正在学习人工神经网络(ANN),并且已经有一个基于小批量培训的代码在Python中运行和运行.我按照迈克尔尼尔森的神经网络和深度学习一书,逐步解释了初学者的每一个算法.还有一个完全可用的手写数字识别代码,对我来说也很好.
但是,我试图通过将整个小批量传递到矩阵形式的反向传播来稍微调整代码.我还为此开发了一个工作代码,但代码在运行时执行速度很慢.有什么办法可以基于反向传播算法实现基于完整矩阵的网络小批量学习方法?
import numpy as np
import pandas as pd
class Network:
def __init__(self, sizes):
self.layers = len(sizes)
self.sizes = sizes
self.biases = [np.random.randn(y, 1) for y in sizes[1:]]
self.weights = [np.random.randn(y, x) for y, x in zip(sizes[1:], sizes[:-1])]
def feed_forward(self, a):
for w, b in zip(self.weights, self.biases):
a = sigmoid(np.dot(w,a) + b)
return a
# Calculate the cost derivative (Gradient of C w.r.t. 'a' - Nabla C(a))
def cost_derivative(self, output_activation, y):
return (output_activation - y)
def update_mini_batch(self, …
Run Code Online (Sandbox Code Playgroud) python numpy backpropagation neural-network gradient-descent