UalwaysKnow / time-series-prediction-with-gan

stock forecasting with sentiment variables(with lstm as generator and mlp as discriminator)
33 stars 12 forks source link

你好,我最近在看这个代码,可以和你交流一下吗? #1

Open anshen666 opened 4 years ago

anshen666 commented 4 years ago

你好,我最近在看这个代码,能否和你交流一下呢?我的QQ:519838354 我的微信:loveanshen 我的邮箱:519838354@qq.com 期待你百忙中的回复

sujanme25 commented 4 years ago

I am trying this code on data with 9 features but the error is coming as dimension not matched.

for step in range(iterations): print(step) temp_X = copy.deepcopy(trainX[step]) temp_X = temp_X.reshape(batch_size,step_size,feature_num) temp_Y = copy.deepcopy(train_Y[step]) temp_Y = temp_Y.reshape(batch_size,1) predictions = generator.predict(temp_X)

训练鉴别器(discrimitor)

for i in range(25):
    aaa = trainX[step]
    input_f = np.concatenate([np.transpose(np.array([aaa[:,0]])), predictions], 0)
    input_r = np.concatenate([np.transpose(np.array([aaa[:,0]])), temp_Y], 0)
    input = np.concatenate([[input_f],[input_r]])
    labels = np.concatenate([[np.ones((6, 1))], [np.zeros((6, 1))]])
    d_loss = discriminator.train_on_batch(input, labels)
# 训练生成器(generator)(通过gan模型,鉴别器(discrimitor)权值被冻结)
for i in range(5):
    misleading_targets = np.zeros((batch_size, 1))
    a_loss = gan.train_on_batch(temp_X, [misleading_targets])
final.append(predictions[0])

final = np.concatenate((np.array(final), train_X[:, -5:]), axis=1) final2 = np.concatenate((np.transpose(np.array([train_Y])), train_X[:, -5:]), axis=1) int1 = scaler.inverse_transform(final) int2 = scaler.inverse_transform(final2) MAPE_O1 = np.mean(np.abs((int2[:,0] - int1[:,0]) / int2[:,0])) print('training result:',MAPE_O1)

得到测试集结果

final = [] for step in range(5): temp_X = copy.deepcopy(testX[step]) temp_X = temp_X.reshape(batch_size, step_size, feature_num) predictions = generator.predict(temp_X) final.append(predictions[0])

final = np.concatenate((np.array(final), test_X[:, -5:]), axis=1) final2 = np.concatenate((np.transpose(np.array([test_Y])), test_X[:, -5:]), axis=1) int1 = scaler.inverse_transform(final) int2 = scaler.inverse_transform(final2) MAPE_O2 = np.mean(np.abs((int2[:,0] - int1[:,0]) / int2[:,0])) print('testing result:',MAPE_O2)