Python代码实现一个简单的循环神经网络RNN

📅 2026/8/9 11:47:45
Python代码实现一个简单的循环神经网络RNN
循环神经网络Recurrent Neural NetworkRNN是一种能够处理序列数据的神经网络模型常用于自然语言处理、时间序列分析等任务。使用Python和PyTorch库实现一个简单的循环神经网络并演示如何在一个简单的时间序列预测任务中使用该模型。importtorchimporttorch.nnasnn# 示例数据一个简单的时间序列data[10,20,30,40,50,60,70,80,90]# 定义时间窗口大小使用前3个时间步预测第4个时间步window_size3# 将时间序列转换为输入数据和目标数据inputs[]targets[]#例如inputs[10,20,30],targets[40];inputs[20,30,40],targets[50]foriinrange(len(data)-window_size):inputs.append(data[i:iwindow_size])targets.append(data[iwindow_size])print(finputs:{inputs})print(fttargets:{targets})# 将输入数据和目标数据转换为张量, inputs:[6,3,1]; targets:[6,1]inputstorch.tensor(inputs).float().unsqueeze(2)targetstorch.tensor(targets).float().unsqueeze(1)print(finputs:{inputs})print(fttargets:{targets})classSimpleRNN(nn.Module):def__init__(self,input_size,hidden_size,output_size):super(SimpleRNN,self).__init__()self.hidden_sizehidden_size# 隐藏层层数默认为1self.rnnnn.RNN(input_size,hidden_size,1,batch_firstTrue)self.fcnn.Linear(hidden_size,output_size)defforward(self,x):out,_self.rnn(x)outself.fc(out[:,-1,:])returnout# 定义模型参数input_size1# 输入特征维度时间序列数据维度hidden_size64# RNN隐层单元数量output_size1# 输出维度预测的时间序列维度# 创建模型实例modelSimpleRNN(input_size,hidden_size,output_size)# 定义损失函数和优化器criterionnn.MSELoss()optimizertorch.optim.Adam(model.parameters(),lr0.001)# 训练模型epochs5000forepochinrange(epochs):optimizer.zero_grad()outputsmodel(inputs)losscriterion(outputs,targets)loss.backward()optimizer.step()if(epoch1)%1000:print(fEpoch [{epoch1}/{epochs}], Loss:{loss.item():.4f})# 使用模型进行预测# 示例使用模型进行预测test_inputtorch.tensor([[70,80,90]]).float().unsqueeze(2)# 输入最后3个时间步predicted_outputmodel(test_input)print(f预测结果:{predicted_output.item()})