对于有状态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()
。
假设所有数据都相同,并且不考虑训练时间(第一种方法将花费更长的时间),最终结果是否相同?
答案 0 :(得分:0)
对于任何感兴趣的人,他们都是一样的。状态是在批之间转移的,因此提交3批10变成30就等于提交30的一批。