输入是一个大小可变的数组。我只能在train_model中一次处理一个样本。我希望累积批次中各元素的目标总和,然后应用正则化和梯度下降。
目前,这是进行每次元素xi更新的训练阶段。
for epoch in range(n_epochs):
minibatch_avg_cost = 0
for xi in dataset.get_next_xi(batch_size):
minibatch_avg_cost += train_model(xi)
print(minibatch_avg_cost)
如何获取train_model(xi)在批次中各元素的结果,然后进行更新呢?
回答:
可以使用dataset.get_next_xi(batch_size)
中的所有元素作为输入,并创建一个theano函数来计算平均成本(而不是只计算一个成本),然后使用平均成本进行更新。你可以从这里查看示例代码
他们这样使用来自训练模型的theano函数:
train_model = theano.function(
inputs=[index],
outputs=cost,
updates=updates,
givens={
x: train_set_x[index * batch_size: (index + 1) * batch_size],
y: train_set_y[index * batch_size: (index + 1) * batch_size]
})
其中cost
是数据集批次的平均成本