【发布时间】:2021-05-30 19:03:45
【问题描述】:
X_train = np.reshape(X_train, (X_train.shape[0], 1, X_train.shape[1]))
X_test = np.reshape(X_test, (X_test.shape[0], 1, X_test.shape[1]))
尝试通过包装类在残差(跳过连接)LSTM 模型上训练我的数据集:
import tensorflow as tf
class ResidualWrapper(tf.keras.Model):
def __init__(self, model):
super().__init__()
self.model = model
def call(self, inputs, *args, **kwargs):
delta = self.model(inputs, *args, **kwargs)
每个时间步的预测是前一个时间步的输入加上模型计算的增量。
return inputs + delta
residual_lstm = ResidualWrapper(
model = Sequential()
model.add(Bidirectional(LSTM(64,input_shape=(X_train.shape[1], X_train.shape[2]))))
model.add(Dropout(0.2))
model.add(Dense(1))
model.compile(loss='mean_squared_error', optimizer='adam'))
history = model.fit(X_train, Y_train, epochs=10, batch_size=64, validation_data=(X_test, Y_test),
callbacks=[EarlyStopping(monitor='val_loss', patience=10)], verbose=1, shuffle=False)
model.summary()
#但在model.add(Bidirectional())处出现无效语法错误
【问题讨论】:
-
residual_lstm = ResidualWrapper(?包装的是什么? -
你可以在tensorflow.org/tutorials/structured_data/time_series中查看Residual Wrapper
-
我的意思是这是无效的语法:
ResidualWrapper(model = Sequential() model.add(...。你应该像ResidualWrapper(model)一样使用它
标签: python numpy lstm recurrent-neural-network