我正在实现使用theano的神经网络来识别手写数字(mnist问题)。输入是具有28x28像素灰度的图像。我正在使用梯度下降训练网络。在我的代码中,我有一个函数可以使用随机梯度下降来更新参数(权重和偏差)。该功能是这样的,
train_mb = theano.function(
[i,eta], cost, updates=updates,
givens={
self.x:
training_x[i*mini_batch_size: (i+1)*mini_batch_size],
self.y:
training_y[i*mini_batch_size: (i+1)*mini_batch_size]
})
其中成本是成本函数,学习率和更新是由
给出的 updates = [(param, param - eta*grad) for param, grad in zip(self.params, grads)]
其中param是权重和偏差,而grad是成本函数的梯度。
我想做一些数据扩充。为此,我想拍摄每张图像并执行平移(左,右,上,下)以及一些小角度旋转。
为了节省磁盘空间,我想对每个迷你批处理的映像执行上述操作,以这种方式创建一个包含当前迷你批处理以及其稍有不同版本的列表。然后,我想将此列表上的每个迷你批处理传递给train_mb函数。
我还没有找到一种方法。谁能提供一些有关如何执行此操作的提示。
非常感谢,
亚历杭德罗