首页 > 解决方案 > tensorflow2.0 lstm ,当一个时间序列用于恢复另一个时,现在验证数据集的损失不能减少

问题描述

CSV 有两列时间序列。,两列之间存在数学关系。当一个时间序列通过 lstm 恢复另一个时间序列时,验证数据集的损失无法减少。我该怎么办?</p>

import pandas as pd

dataframe = pd.read_csv('qqq.csv')
dataset = dataframe.values

x = dataset[:986,0]
y = dataset[:986,1]
print(x.shape)
time_points = np.linspace(0, 1, 986)   
seq_length = 50
dataX = []
dataY = []
for i in range(0, len(time_points) - seq_length, 1):
    seq_in = x[i:i + seq_length]
    seq_out = y[i+ seq_length]
    dataX.append([seq_in])
    dataY.append(seq_out)

X = np.reshape(dataX, (len(dataX), seq_length, 1)) 
Y = np.reshape(dataY, (len(dataY), 1))
print('xshape',X.shape)
print('yshape',Y.shape)

x_test = dataset[986:1286,0]
y_test = dataset[986:1286,1]
time_points_test = np.linspace(0, 1,300)
dataX_test = []
dataY_test = []
for j in range(0, len(time_points_test) - seq_length, 1):
    seq_in_test = x_test[j:j + seq_length]
    seq_out_test = y_test[j + seq_length]
    dataX_test.append([seq_in_test])
    dataY_test.append(seq_out_test)

X_test = np.reshape(dataX_test, (len(dataX_test), seq_length, 1)) #numpy as np
Y_test = np.reshape(dataY_test, (len(dataY_test), 1))

model = Sequential()
model.add(LSTM(10, input_shape=(X.shape[1], X.shape[2])))
model.add(Dropout(0.2))
model.add(Dense(1, activation='tanh'))

model.compile(loss='mse', optimizer=tf.keras.optimizers.Adam(0.005))
model.fit(X[:936], y[:936], epochs=100, batch_size=100, verbose=1, validation_split=0.3)

https://i.stack.imgur.com/UlAVY.png

标签: tensorflow

解决方案


推荐阅读