tensorflow - keras stack LSTM:当输入在时间步长上移动时,为什么中间层输出没有移动?
问题描述
我对 keras 中的 LSTM 有疑问。对于以下型号:
model = Sequential()
model.add(LSTM(3, activation='relu', return_sequences=True, input_shape=(2, 1))) #
model.add(LSTM(1, activation='relu')) # , return_sequences=True
model.add(Dense(1))
model.compile(optimizer='adam', loss='mse')
model.summary()
编译为:
Model: "sequential_14"
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
lstm_28 (LSTM) (None, 2, 3) 60
_________________________________________________________________
lstm_29 (LSTM) (None, 1) 20
_________________________________________________________________
dense_14 (Dense) (None, 1) 2
=================================================================
训练后,我运行以下输入/(预期输出)组合为生成器:
Xv=array([[0.86596249],
[0.71205712],
[0.66377103],
[0.38479495],
[0.17930413]])
Yv=array([ 0. , -0.15390537, -0.04828609, -0.27897608, -0.20549082])
作为模型的输入,它只是从上述输入中获取的长度为 2 的移位窗口,因为它应该:
(array([[[0.86596249],
[0.71205712]]]), array([-0.15390537]))
(array([[[0.71205712],
[0.66377103]]]), array([-0.04828609]))
(array([[[0.66377103],
[0.38479495]]]), array([-0.27897608]))
第一个 LSTM 层的输出 lstm_28 是:
[[[0.6350528 0.03059685 0.27147472]
[0.80559087 0.6672701 0.580988 ]]
[[0.56819683 0.0700734 0.23733588]
[0.7769858 0.6412031 0.51144546]]
[[0.5478389 0.08248721 0.22635613]
[0.6315232 0.7412042 0.45036086]]]
为什么这一层的输出也没有“移位”?我的意思是连续步骤 (t+1) 的第一行不是之前步骤 (t) 的第二行。
解决方案
推荐阅读
- laravel - pwa Laravel 在控制台中没有给我错误,但在缓存中的服务工作者中没有错误
- php - php ajax依赖下拉列表不从表中加载数据
- javascript - 无需单击任何确定或取消图标即可打开 swal
- python - 意外行为 xarray Dataset.sel
- php - PHP取消设置数组值
- jquery - laravel 数据加载问题 - 在控制器中查询
- ios - 为什么 WKWebView 不使用 swift 在 iOS 中加载 pdf?
- python - Python索引错误使用生成器和yield
- swift - 如何在标签中添加动态文本字段?
- javascript - 导出默认组件和多个子组件