解决 TensorFlow SimpleRNN 层输入维度不匹配错误
解决 TensorFlow SimpleRNN 层输入维度不匹配错误
model = tf.keras.Sequential([
tf.keras.layers.Flatten(input_shape=train_dataset.shape[-2:]),
tf.keras.layers.SimpleRNN(64,activation='tanh'),
tf.keras.layers.Dense(32,activation='tanh'),
tf.keras.layers.Dense(64,activation='leaky_relu'),
tf.keras.layers.Dense(32,activation='leaky_relu'),
tf.keras.layers.Dense(16,activation='tanh'),
tf.keras.layers.Dense(3,activation='linear')
])
上述代码报错 ValueError: Input 0 of layer simple_rnn_1 is incompatible with the layer: expected ndim=3, found ndim=2. Full shape received: (None, 233180) 该怎么修改代码内容:根据报错信息,可以看出 SimpleRNN 层期望输入的维度是 3,但是当前输入的维度是 2。这是因为在 Flatten 层之后,没有添加一个维度的层来匹配 SimpleRNN 层的输入要求。
解决方法是在 Flatten 层之后添加一个 Reshape 层来改变输入的维度。修改后的代码如下:
model = tf.keras.Sequential([
tf.keras.layers.Flatten(input_shape=train_dataset.shape[-2:]),
tf.keras.layers.Reshape((train_dataset.shape[-2], 1)),
tf.keras.layers.SimpleRNN(64, activation='tanh'),
tf.keras.layers.Dense(32, activation='tanh'),
tf.keras.layers.Dense(64, activation='leaky_relu'),
tf.keras.layers.Dense(32, activation='leaky_relu'),
tf.keras.layers.Dense(16, activation='tanh'),
tf.keras.layers.Dense(3, activation='linear')
])
在这个修改后的代码中,通过添加一个 Reshape 层来将输入的维度从 (233180,) 改变为 (233180, 1),然后再传递给 SimpleRNN 层。
原文地址: https://www.cveoy.top/t/topic/pe8t 著作权归作者所有。请勿转载和采集!