我已经构建了这个简单的 LSTM 模型,它提供与我的输入相同的 3 个维度的输出。但我的目标数据是二维的。有什么方法可以平均出特定访问中的输出。
batch_sizes = 1
epochs = 2
timesteps = 20
inputs_1_mae = tf.keras.layers.Input(shape = (20,10),batch_size = batch_sizes)
lstm_1_mae = tf.keras.layers.LSTM(10, stateful = True, return_sequences = True)(inputs_1_mae)
lstm_2_mae = tf.keras.layers.LSTM(10, stateful = True, return_sequences = True)(lstm_1_mae)
output_1_mae = tf.keras.layers.Dense(units = 10)(lstm_2_mae)
regressor_mae = tf.keras.Model(inputs= inputs_1_mae ,outputs = output_1_mae)
regressor_mae.compile (optimizer = "adam", loss = "mae")
regressor_mae.summary()
regressor_mae.fit(final_x_array, final_y_array, batch_size = batch_sizes, epochs=epochs)
这里是模型的总结:
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
input_16 (InputLayer) [(1, 20, 10)] 0
lstm_17 (LSTM) (1, 20, 10) 840
lstm_18 (LSTM) (1, 20, 10) 840
dense_16 (Dense) (1, 20, 10) 110
我希望输出的形状为 (1,10)。我如何消除那个特定的轴? 谢谢
Just remove return_sequences = True of your last lstm layer because you just need the last output.
您可以使用 Lambda 层来完成它。以下内容可能会有所帮助:
import tensorflow as tf
batch_sizes = 1
epochs = 2
timesteps = 20
inputs_1_mae = tf.keras.layers.Input(shape = (20,10),batch_size = batch_sizes)
lstm_1_mae = tf.keras.layers.LSTM(10, stateful = True, return_sequences = True)(inputs_1_mae)
lstm_2_mae = tf.keras.layers.LSTM(10, stateful = True, return_sequences = True)(lstm_1_mae)
output_1_mae = tf.keras.layers.Dense(units = 10)(lstm_2_mae)
output_1_mae_avg=tf.keras.layers.Lambda(lambda var_x: tf.keras.backend.mean(var_x, axis=1),)(output_1_mae)
regressor_mae = tf.keras.Model(inputs= inputs_1_mae ,outputs=output_1_mae_avg)
regressor_mae.compile (optimizer = "adam", loss = "mae")
regressor_mae.summary()
输出:
Model: "model_1"
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
input_2 (InputLayer) [(1, 20, 10)] 0
lstm_2 (LSTM) (1, 20, 10) 840
lstm_3 (LSTM) (1, 20, 10) 840
dense_1 (Dense) (1, 20, 10) 110
lambda_1 (Lambda) (1, 10) 0
=================================================================
Total params: 1,790
Trainable params: 1,790
Non-trainable params: 0
_________________________________________________________________