我正在训练一个有状态的 LSTM。我的数据存储在一系列文件中,每个文件都与某个城市相关。对于每个城市,我可能有不同数量的数据,因此 City AI 可能有 4000 天,但 City BI 可能只有 500 天。我每天有 20 个特征。
假设我将序列大小设置为 200;对于城市 A,我有一批 20 个完整的序列,但对于城市 B,我只有 2 个。
使用有状态 LSTM,我需要以batch_input_shape
[batch size, sequence size, features] 的形式指定,我认为这会给我带来一些问题,因为我处理的每个城市的批大小都会发生变化。
正如我所看到的,我唯一可用的选择是将批量大小定义batch_input_shape
为 1,然后为每次迭代有效地发出一个 200 长度的序列。batch_input_shape
[1, 200, 20] 也是如此
显然这并不理想,因为每次迭代都向 NN 呈现如此少量的数据(它肯定是小批量!)所以训练网络会很慢。
但是我是对的,由于数据的大小不同,我真的没有其他选择吗?除了训练时间慢之外,批量大小为 1 的训练是否存在任何固有问题?