问题的背景:
我正在使用keras LSTM进行情绪分析,因此传递给LSTM层的输入数据的形状应该是(样本数,时间步数,特征数量的数量)
每个样本都是一个句子,每个时间步骤包含一个句子的术语 .
主要问题:
最令人困惑的是LSTM的状态管理,我已经知道状态将默认重置每个批次 . 我也没有使用 stateful
.
所以我的问题是 What does LSTM do with the states within a batch?
例如,如果我将批次设置为大小32.那么这意味着将在一批中同时训练32个样本句子 . 这对国家有什么影响?
第一批的第二个元素是否从第一个元素的第一个元素继承状态?
如果是这样,我的batch_size应设置为1,因为所有句子情绪分析都应该是独立的 .
非常感谢!
1 回答
你错过了一个实现技巧,在backend code输入张量
(batch, timesteps, ...)
被转换为time-major(timesteps, batch, ...)
然后RNN循环遍历时间步骤,从Tensorflow后端提取:因此,批处理中的每个序列都以
initial_states
开头,如果没有stateful=True
,则通过在RNN class中调用.get_initial_state(inputs)
来设置 . 为了回答您的问题,批次中的每个序列都会因转置而独立处理 .