<p>这里有几个问题</p>
<ul>
<li>您的输入没有时间步长,您需要输入形状<code>(n, time steps, features)</code></li>
<li>在<code>input_shape</code>中,时间步长维度位于第一位,而不是最后一位</li>
<li>上一个LSTM层返回序列,因此无法将其与0和1进行比较</li>
</ul>
<p>我所做的:</p>
<ul>
<li>我在数据中添加了时间步长(7)</li>
<li>我在<code>input_shape</code>中排列了维度</li>
<li>我设置了最后的<code>return_sequences=False</code></li>
</ul>
<p>完全修复了生成数据的示例:</p>
<pre><code>import numpy as np
from tensorflow import keras
from tensorflow.keras import layers
batch = 20
n_samples = 1000
timesteps = 7
features = 10
x_train = np.random.rand(n_samples, timesteps, features)
y_train = keras.utils.to_categorical(np.random.randint(0, 10, n_samples))
input_layer = keras.Input(shape=(timesteps, features),batch_size=batch)
dense = layers.LSTM(16, activation="sigmoid", return_sequences=True)(input_layer)
hidden_layer_2 = layers.LSTM(16, activation="sigmoid", return_sequences=False)(dense)
output_layer = layers.Dense(10, activation="softmax")(hidden_layer_2)
model = keras.Model(inputs=input_layer, outputs=output_layer, name="my_model")
model.compile(loss='categorical_crossentropy', optimizer='adam')
history = model.fit(x_train, y_train)
</code></pre>
<pre><code>Train on 1000 samples
20/1000 [..............................] - ETA: 2:50 - loss: 2.5145
200/1000 [=====>........................] - ETA: 14s - loss: 2.3934
380/1000 [==========>...................] - ETA: 5s - loss: 2.3647
560/1000 [===============>..............] - ETA: 2s - loss: 2.3549
740/1000 [=====================>........] - ETA: 1s - loss: 2.3395
900/1000 [==========================>...] - ETA: 0s - loss: 2.3363
1000/1000 [==============================] - 4s 4ms/sample - loss: 2.3353
</code></pre>