python - Tensoflow2 LSTM - 未使用的参数 input_shape?

标签 python tensorflow keras deep-learning lstm

所以我使用以下代码构建了神经网络:

import tensorflow as tf

tf_model = tf.keras.Sequential()
tf_model.add(tf.keras.layers.LSTM(50, activation='relu'))
tf_model.add(tf.keras.layers.Dense(20, activation='relu'))
tf_model.add(tf.keras.layers.Dense(10, activation='relu'))
tf_model.add(tf.keras.layers.Dense(1, activation='linear'))
tf_model.compile(optimizer='Adam', loss='mse')

我的训练集的形状如下:

>> ts_train_X.shape
(16469, 3, 21)

我在 stackoverflow 上阅读了大量文章和问题,以便为 LSTM 提供正确的数据框架。我发现的几乎每个页面都指定了 input_shape 参数并将其传递给 LSTM(..) 或 Sequential(..)。

当我查看LSTM API时我找不到对此参数的引用。我还瞥见了源代码,对我来说,形状似乎是自动推断出来的,但我对此不确定。

这引出了我的问题:为什么我的代码可以工作?如果我不指定 input_shape 参数,作为第一层的 LSTM 层如何知道我的输入的形状?


编辑:根据评论中的建议更改标题。

最佳答案

参数input_shape可以赋予任何kerasLayer子类的构造函数,因为这就是API的定义方式。

代码之所以有效,是因为 input_shape 作为关键字参数(**kwargs)传递,然后这些关键字参数由 LSTM 传递> 构造函数传递给 Layer 构造函数,然后继续存储信息以供以后使用。这实际上意味着不必在每个层中定义 input_shape 参数,而是将其作为关键字参数传递。

我认为问题在于,由于 keras 已移至 tensorflow,文档可能不完整。您可以在 Guide to the Sequential API 中找到有关 input_shape 参数的更多信息。 .

关于python - Tensoflow2 LSTM - 未使用的参数 input_shape?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61566010/

相关文章:

tensorflow - keras model.fit_generator 的分割图像数据集

tensorflow - 如何在 tensorflow 中指定线性变换?

python - Keras 二维输入到二维输出

c# - 如何将validation_data传递给Model.fit + Dataset?

python - Python 中的 DFT 花费的时间明显长于 C

TensorFlow 将数据加载到 tf.Dataset 所需的时间太长

python - 在 Python 3 的列表中连续计算四个

tensorflow - 如何将类添加到现有模型?

python - 如何在 api.py 中获取一些(自定义)用户数据?

python - 生日提醒应用: function doesn't display