TCN 输出错误,但我不知道为什么

时间:2021-02-06 14:06:57

标签: python tensorflow conv-neural-network

import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
from tensorflow.keras import Input, Model
from tensorflow.keras.layers import Dense
from tqdm.notebook import tqdm
from tcn import TCN
plt.style.use('seaborn')
import pandas as pd
from sklearn.preprocessing import MinMaxScaler
from sklearn import preprocessing
from sklearn.metrics import mean_squared_error
from sklearn.metrics import mean_absolute_error
from sklearn.metrics import r2_score
from math import sqrt
from tensorflow.keras.layers import *
from tensorflow.keras.models import *
from tensorflow.keras.optimizers import Adam
import tensorflow.keras.backend as K
import pandas_datareader as pdd
import math
np.random.seed(100)

df = pdd.DataReader('AAPL', data_source='yahoo', start='2012-01-01', end='2020-12-31')
df

data = df.filter(['Close'])
dataset = data.values
len(dataset)

training_data_size = math.ceil(len(dataset)*0.7)
training_data_size

scaler = MinMaxScaler(feature_range=(0,1))
scaled_data = scaler.fit_transform(dataset)
scaled_data

train_data = scaled_data[0:training_data_size,:]
x_train = []
y_train = []
for i in range(60, len(train_data)):
    x_train.append(train_data[i-60:i, 0])
    y_train.append(train_data[i,0])
    if i<=60:
        print(x_train)
        print(y_train)    

x_train, y_train = np.array(x_train), np.array(y_train)
x_train = np.reshape(x_train, (x_train.shape[0], x_train.shape[1], 1))
x_train.shape

model = Sequential()
model.add(TCN(50, return_sequences=True, input_shape=(x_train.shape[1], 1)))
model.add(TCN(50, return_sequences=True))
model.add(TCN(50, return_sequences=False))
model.add(Dense(25))
model.add(Dense(1))
print(model.summary())

model.compile(optimizer='adam', loss='mean_squared_error')
model.fit(x_train, y_train, batch_size=50, epochs=5)

test_data = scaled_data[training_data_size-60: , :]
x_test = []
y_test = dataset[training_data_size: , :]
for i in range(60, len(test_data)):
    x_test.append(test_data[i-60:i, 0])

x_test = np.array(x_test)
x_test = np.reshape(x_test, (x_test.shape[0], x_test.shape[1], 1))
predictions = model.predict(x_test)
predictions = scaler.inverse_transform(predictions)
rsme = np.sqrt(np.mean((predictions - y_test)**2))
rsme

train = data[:training_data_size]
valid = data[training_data_size:]
valid['predictions'] = predictions
plt.figure(figsize=(16,8))
plt.title('AAPL')
plt.xlabel('Date', fontsize=18)
plt.ylabel('Close Price in $', fontsize=18)
plt.plot(train['Close'])
plt.plot(valid[['Close', 'predictions']])
plt.legend(['Train', 'Val', 'predictions'], loc='lower right')
plt.show

This is the picture of the output that I received

我得到了这个图的输出,有人知道为什么会这样吗?我做错了什么?

我猜我没有很好地格式化我的数据,这可能是这种情况,因为 TCN 是 1D CNN + 卷积,但我不确定如何转换它。有人可以帮忙吗?

0 个答案:

没有答案