有状态LSTM的这两种批处理方法有什么区别

时间:2018-07-27 14:27:51

标签: neural-network lstm recurrent-neural-network rnn

对于有状态LSTM,这两种方法实际上是相同的:

batch_input_shape = [1,10,2]
for _ in range(3):
    x_batch, y_batch = batcher()
    model.train_on_batch(x_batch, y_batch)
model.reset_states()

batch_input_shape = [3,10,2]
x_batch, y_batch = batcher()
model.train_on_batch(x_batch, y_batch)
model.reset_states()

即第一种方法将30行数据分布在3个独立的批次(共10个序列)中,并在所有3次reset_states()调用之后调用train_on_batch()。第二种方法以3个批处理的方式(共10个序列)提交30行数据,并在之后立即调用reset_states()

假设所有数据都相同,并且不考虑训练时间(第一种方法将花费更长的时间),最终结果是否相同?

1 个答案:

答案 0 :(得分:0)

对于任何感兴趣的人,他们都是一样的。状态是在批之间转移的,因此提交3批10变成30就等于提交30的一批。