在LSTM中,INPUT_Shape和Batch_Input_Shape有什么不同 [英] What's the difference between input_shape and batch_input_shape in LSTM

查看:21
本文介绍了在LSTM中,INPUT_Shape和Batch_Input_Shape有什么不同的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

这只是设置相同内容的不同方式,还是它们实际上有不同的含义?这与网络配置有关吗?

在一个简单的示例中,我看不到以下各项之间的任何区别:

model = Sequential()
model.add(LSTM(1, batch_input_shape=(None,5,1), return_sequences=True))
model.add(LSTM(1, return_sequences=False))

model = Sequential()
model.add(LSTM(1, input_shape=(5,1), return_sequences=True))
model.add(LSTM(1, return_sequences=False))

但是,当我将批处理大小设置为12batch_input_shape=(12,5,1)并在拟合模型时使用batch_size=10时,出现错误。

ValueError:无法为张量馈送形状(10,5,1)的值 ‘lstm_96_input:0’,其形状为‘(12,5,1)’

这显然是有道理的。但是,我看不出在模型级别限制批处理大小有什么意义。

我是否遗漏了什么?

推荐答案

这只是设置相同内容的不同方式,还是它们实际上有不同的含义?这与网络配置有关吗?

是的,它们实际上是等效的,您的实验证实了这一点,另请参阅this discussion

但是,我看不出在模型级别限制批次大小有什么意义。

批处理大小限制有时是必要的,我想到的示例是有状态LSTM,其中批处理中的最后一个单元格状态被记住并用于后续批处理的初始化。这确保客户端不会向网络提供不同的批处理大小。示例代码:

# Expected input batch shape: (batch_size, timesteps, data_dim)
# Note that we have to provide the full batch_input_shape since the network is stateful.
# the sample of index i in batch k is the follow-up for the sample i in batch k-1.
model = Sequential()
model.add(LSTM(32, return_sequences=True, stateful=True,
               batch_input_shape=(batch_size, timesteps, data_dim)))

这篇关于在LSTM中,INPUT_Shape和Batch_Input_Shape有什么不同的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆