在《命运2》中享受纯粹单人游戏体验:Destiny 2 Solo Enabler全面指南
2026/8/9 12:20:49
循环神经网络(Recurrent Neural Network,RNN)是一种能够处理序列数据的神经网络模型,常用于自然语言处理、时间序列分析等任务。
使用Python和PyTorch库实现一个简单的循环神经网络,并演示如何在一个简单的时间序列预测任务中使用该模型。
importtorchimporttorch.nnasnn# 示例数据:一个简单的时间序列data=[10,20,30,40,50,60,70,80,90]# 定义时间窗口大小(使用前3个时间步预测第4个时间步)window_size=3# 将时间序列转换为输入数据和目标数据inputs=[]targets=[]#例如,inputs=[10,20,30],targets=[40];inputs=[20,30,40],targets=[50]foriinrange(len(data)-window_size):inputs.append(data[i:i+window_size])targets.append(data[i+window_size])print(f"inputs:{inputs}")print(f"ttargets:{targets}")# 将输入数据和目标数据转换为张量, inputs:[6,3,1]; targets:[6,1]inputs=torch.tensor(inputs).float().unsqueeze(2)targets=torch.tensor(targets).float().unsqueeze(1)print(f"inputs:{inputs}")print(f"ttargets:{targets}")classSimpleRNN(nn.Module):def__init__(self,input_size,hidden_size,output_size):super(SimpleRNN,self).__init__()self.hidden_size=hidden_size# 隐藏层层数默认为1self.rnn=nn.RNN(input_size,hidden_size,1,batch_first=True)self.fc=nn.Linear(hidden_size,output_size)defforward(self,x):out,_=self.rnn(x)out=self.fc(out[:,-1,:])returnout# 定义模型参数input_size=1# 输入特征维度(时间序列数据维度)hidden_size=64# RNN隐层单元数量output_size=1# 输出维度(预测的时间序列维度)# 创建模型实例model=SimpleRNN(input_size,hidden_size,output_size)# 定义损失函数和优化器criterion=nn.MSELoss()optimizer=torch.optim.Adam(model.parameters(),lr=0.001)# 训练模型epochs=5000forepochinrange(epochs):optimizer.zero_grad()outputs=model(inputs)loss=criterion(outputs,targets)loss.backward()optimizer.step()if(epoch+1)%100==0:print(f'Epoch [{epoch+1}/{epochs}], Loss:{loss.item():.4f}')# 使用模型进行预测# 示例:使用模型进行预测test_input=torch.tensor([[70,80,90]]).float().unsqueeze(2)# 输入最后3个时间步predicted_output=model(test_input)print(f'预测结果:{predicted_output.item()}')