【模型实现】基于Python的LSTM网络实现单特征预测回归任务(PyTorch)
import torch
import torch.nn as nn
from torch.autograd import Variable
# 定义LSTM模型
class LSTMRegressor(nn.Module):
def __init__(self, input_size, hidden_size, output_size):
super(LSTMRegressor, self).__init__()
self.hidden_size = hidden_size
self.lstm = nn.LSTM(input_size, hidden_size, batch_first=True)
self.linear = nn.Linear(hidden_size, output_size)
def forward(self, x):
# 初始化隐藏状态
h0 = Variable(torch.zeros(1, x.size(0), self.hidden_size))
c0 = Variable(torch.zeros(1, x.size(0), self.hidden_size))
# 将输入x和初始化的隐藏状态送入LSTM
out, _ = self.lstm(x, (h0, c0))
# 使用线性层进行输出
out = self.linear(out[:, -1, :])
return out
# 示例:使用模型
input_size = 1 # 假设单个特征的维度为1
hidden_size = 10 # 隐藏层的节点数
output_size = 1 # 输出的维度,假设为单个值
model = LSTMRegressor(input_size, hidden_size, output_size)
# 示例输入数据
x = Variable(torch.randn(1, 10, input_size)) # 1个批次,10个时间步,每个时间步1个特征值
y = model(x) # 模型预测
print(y)
这段代码定义了一个基本的LSTM回归模型,它接受一个单一特征的序列作为输入,并预测序列的下一个值。在PyTorch框架中,我们使用LSTM层处理序列数据,并使用全连接层进行输出。代码示例展示了如何实例化模型并对一个随机生成的序列进行预测。
评论已关闭