2024年Python最新【RNN从入门到实战】GRU入门到实战——使用GRU预测股票。

def init(self, data):

定义好 image 的路径

self.data, self.label = data[:, :-1].float(), data[:, -1].float()

def getitem(self, index):

return self.data[index], self.label[index]

def len(self):

return len(self.data)

训练与测试


n为模型中的n

LR是模型的学习率

EPOCH是多次循环

train_end这个在之前的数据集中有提到。(注意是负数)

n = 30

LR = 0.0001

EPOCH = 100

train_end = -500

loss选用mse

预测的数据选择“收盘价”

n = 10

LR = 0.0001

EPOCH = 100

train_end = -500

数据集建立

df, df_all, df_index = readData(‘收盘价’, n=n, train_end=train_end)

df_all = np.array(df_all.tolist())

plt.plot(df_index, df_all, label=‘real-data’)

df_numpy = np.array(df)

df_numpy_mean = np.mean(df_numpy)

df_numpy_std = np.std(df_numpy)

df_numpy = (df_numpy - df_numpy_mean) / df_numpy_std

df_tensor = torch.Tensor(df_numpy)

trainset = TrainSet(df_tensor)

trainloader = DataLoader(trainset, batch_size=16, shuffle=True)

rnn = RNN(n)

optimizer = torch.optim.Adam(rnn.parameters(), lr=LR) # optimize all cnn parameters

loss_func = nn.MSELoss()

for step in range(EPOCH):

for tx, ty in trainloader:

output = rnn(torch.unsqueeze(tx, dim=0))

loss = loss_func(torch.squeeze(output), ty)

optimizer.zero_grad() # clear gradients for this training step

loss.backward() # back propagation, compute gradients

optimizer.step()

print(step, loss)

if step % 10:

torch.save(rnn, ‘rnn.pkl’)

torch.save(rnn, ‘rnn.pkl’)

generate_data_train = []

generate_data_test = []

test_index = len(df_all) + train_end

df_all_normal = (df_all - df_numpy_mean) / df_numpy_std

  • 26
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值