这两种使用有状态 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是一样的。
对于有状态 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是一样的。