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

What is the difference between these two methods of batching with stateful LSTM

对于有状态 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 个序列,并且 reset_states() 在所有 3 个 train_on_batch() 调用之后调用。第二种方法30行数据分3批10序列提交,reset_states()之后立即调用。

假设都是一样的数据,抛开训练时间(第一种方法会花更长的时间)最后的结果是一样的吗?

对于任何感兴趣的人来说,它们都是一样的。状态在批次之间结转,所以提交3批10做30和提交一批30是一样的。