神经网络需要什么输入来进行预测?

问题描述 投票:1回答:1

我有一个非常初学的问题。我已经安装了一个预测股票价格的模型。神经网络需要做什么输入才能做出预测?如果我的批量大小为30,我是否需要以29种最后已知价格提供?顺便说一句,这是我的代码:

    # First step, import libraries.
import numpy as np 
import pandas as pd 
from matplotlib import pyplot as plt
import h5py

random_seed = 452

# Neural network configuration
num_epochs = 500
num_batch_size = 30
lstm_activation_function = "sigmoid"

df = pd.read_csv("data_dl.csv")
df["date"] = pd.to_datetime(df["Timestamp"],unit="s").dt.date
group = df.groupby("date")
Real_Price = group["Close"].mean()
Real_Price = Real_Price[len(Real_Price)-29:]

# Data preprocess
training_set = Real_Price.values
training_set = np.reshape(training_set, (len(training_set), 1))
from sklearn.preprocessing import MinMaxScaler
sc = MinMaxScaler()
training_set = sc.fit_transform(training_set)
X_train = training_set[0:len(training_set)-1]
y_train = training_set[1:len(training_set)]
X_train = np.reshape(X_train, (len(X_train), 1, 1))

from keras.models import load_model

model = load_model("20180302_0340e500b30_s452.h5")

yhat = model.predict_on_batch(X_train)

fname_graph = "pr_e" + str(num_epochs) + "_b" + str(num_batch_size) + ".png"
plt.figure(figsize=(25,15), dpi=80, facecolor="w", edgecolor="k")
ax = plt.gca()  
plt.plot(yhat, color = "red", label = "Price")
plt.title("Price", fontsize=40)

for tick in ax.xaxis.get_major_ticks():
    tick.label1.set_fontsize(18)
for tick in ax.yaxis.get_major_ticks():
    tick.label1.set_fontsize(18)
plt.xlabel("Time", fontsize=40)
plt.legend(loc=2, prop={"size": 25})
plt.savefig(fname_graph, bbox_inches="tight")
plt.show()
python tensorflow neural-network keras
1个回答
0
投票

就像马克西米利安在他的评论中写道,你的网络用于预测的输入应该与训练期间输入的形状相同。在这种情况下,我们无法确定这是什么,因为您的代码中没有进行任何培训;看起来你正在加载一个已经训练过的模型:

model = load_model("20180302_0340e500b30_s452.h5")

但是,以下行中变量的命名表明您总是在时间t使用一个数据点(单个值?),以便在t+1时预测下一个值:

X_train = training_set[0:len(training_set)-1]
y_train = training_set[1:len(training_set)]

如果在训练期间确实使用了这种代码,那么您还应该使用类似的预测设置:为时间点t提供一个数字作为输入,获得下一个时间步长t+1作为输出的预测。

如果我的批量大小为30,我是否需要以29种最后已知价格提供?

在培训期间使用批次更常见,在进行预测时,批量大小为1更为常见,但如果您有大量新输入,则可以同时对整个批次进行预测。作出预测。

无论哪种方式,在这句话中你的问题的答案是否定的。批量大小是指您拥有/想要的输入输出对的数量(其中输入可以是许多元素的向量,我怀疑在您的情况下恰好只有一个元素)。如果您的批量大小为30,这意味着您可以同时提供30个不同的输入值,这些输入值对应于30个不同的时间步长[t0, t1, ..., t29]作为输入,并且同时为30个不同的匹配时间步长[t0 + 1, t1 + 1, ..., t29 + 1]获得30个不同的输出。

© www.soinside.com 2019 - 2024. All rights reserved.