我的一些代码如下:
DATA_SPLIT_PCT = 0.2
timesteps = 5
n_features = 20
epochs = 100
batch = 32
lr = 0.0001
lstm_autoencoder = Sequential([
# Encoder
LSTM(8, activation='relu', input_shape=(timesteps, n_features), return_sequences=True),
LSTM(4, activation='relu', return_sequences=False),
RepeatVector(timesteps),
# Decoder
LSTM(4, activation='relu', return_sequences=True),
LSTM(8, activation='relu', return_sequences=True)
TimeDistributed(Dense(n_features)),
])
adam = optimizers.Adam(lr)
lstm_autoencoder.compile(loss='mse', optimizer=adam)
for stock in stock_list: # 500 stocks in stock_list
lstm_autoencoder_history = lstm_autoencoder.fit(X_train_dict[ticker], X_train_dict[ticker],
epochs=epochs,
batch_size=batch,
validation_data=(X_valid_dict[ticker], X_valid_dict[ticker]),
verbose=False).history
plt.plot(lstm_autoencoder_history['loss'], linewidth=2, label='Train')
plt.plot(lstm_autoencoder_history['val_loss'], linewidth=2, label='Valid')
plt.show()
我使用了for循环将我的数据馈送到lstm_autoencoder
网络中。在字典变量stock_list
中,有500个股票名称,例如'AAPL'。
我绘制了lstm_autoencoder_history['loss']
和lstm_autoencoder_history['val_loss']
,这很奇怪,因为通常验证损失高于训练损失。
我很想知道为什么我的地块的验证损失较少。作为参考,我使用了 Keras 作为深度学习框架。自从我使用Keras以来,我认为该库将通过平均误差来处理训练集大小和验证集大小的不同比例。