我有一个由一个 LSTM 和两个 Dense 层组成的简单网络,如下所示:
model = tf.keras.Sequential()
model.add(layers.LSTM(20, input_shape=(train_X.shape[1], train_X.shape[2])))
model.add(layers.Dense(20, activation='sigmoid'))
model.add(layers.Dense(1, activation='sigmoid'))
model.compile(loss='mean_squared_error')
Run Code Online (Sandbox Code Playgroud)
为了分类,它对具有 3 个输入(归一化 0 到 1.0)和 1 个输出(二进制)的数据进行训练。数据是时间序列数据,其中时间步长之间存在关系。
var1(t) var2(t) var3(t) var4(t)
0 0.448850 0.503847 0.498571 0.0
1 0.450992 0.503480 0.501215 0.0
2 0.451011 0.506655 0.503049 0.0
Run Code Online (Sandbox Code Playgroud)
模型训练如下:
history = model.fit(train_X, train_y, epochs=2800, batch_size=40, validation_data=(test_X, test_y), verbose=2, shuffle=False)
model.summary()
Run Code Online (Sandbox Code Playgroud)
给出模型总结:
Model: "sequential"
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
lstm (LSTM) (None, 20) 1920
_________________________________________________________________
dense (Dense) (None, 20) 420
_________________________________________________________________
dense_1 (Dense) …
Run Code Online (Sandbox Code Playgroud)