tensorflow - Keras中LSTM层的输入维度
问题描述
我正在尝试 keras.layers.LSTM。以下代码有效。
#!/usr/bin/python3
import tensorflow as tf
import numpy as np
from tensorflow import keras
data = np.array([1, 2, 3]).reshape((1, 3, 1))
x = keras.layers.Input(shape=(3, 1))
y = keras.layers.LSTM(10)(x)
model = keras.Model(inputs=x, outputs=y)
print (model.predict(data))
如上图,输入数据形状为(1, 3, 1)
,输入层的实际输入形状为(3, 1)
。我对这种尺寸的不一致感到有些困惑。如果我在输入层中使用以下形状,它不起作用:
x = keras.layers.Input(shape=(1, 3, 1))
错误信息如下:
ValueError: Input 0 of layer lstm is incompatible with the layer: expected ndim=3, found ndim=4. Full shape received: [None, 1, 3, 1]
看起来输入的rank必须是3,但是为什么我们要在Input层使用rank-2的形状呢?
解决方案
查看tf.keras.Input的文档。语法如下-
tf.keras.Input(
shape=None,
batch_size=None,
name=None,
dtype=None,
sparse=False,
tensor=None,
**kwargs
)
shape:定义单个样本的形状,批量大小可变。
请注意,它期望第一个值作为 batch_size 否则batch_size
作为参数显式传递
推荐阅读
- python - 如何从 pandas 数据框中绘制交互式 3d 散点图?
- python - 在python中将列表附加到自身
- html - HTML 表格中的数学模式
- intellij-idea - IntelliJ & Jetty 配置启动后打开浏览器需要很长时间
- reactjs - 反应单元测试 - 酶内部错误:带有标签2的未知节点
- excel - 如果在工作表上使用自动填充,则调用宏
- c# - Outlook 自动完成电子邮件列表
- amazon-web-services - 如何在 lambda 函数中使用 pyhive?
- xamarin.android - aapt2 删除资源 * 不需要默认值
- ionic4 - Ionic 4中带有令牌的Http