没有合适的资源?快使用搜索试试~ 我知道了~
首页深度学习代码实战——基于RNN的时间序列拟合(回归)
1.前言 循环神经网络让神经网络有了记忆, 对于序列型的数据,循环神经网络能达到更好的效果.接着我将实战分析手写数字的 RNN分类 2.导入模块、定义超参数 import torch from torch import nn import numpy as np import matplotlib.pyplot as plt torch.manual_seed(1) TIME_STEP = 10 INPUT_SIZE = 1 LR = 0.02 3.数据准备且打印拟合目标 我们要用到的数据就是这样的一些数据, 用 sin 的曲线预测出 cos 的曲线,也即用sin拟合cos steps =
资源详情
资源评论
资源推荐

深度学习代码实战深度学习代码实战——基于基于RNN的时间序列拟合(回归)的时间序列拟合(回归)
1.前言前言
循环神经网络让神经网络有了记忆, 对于序列型的数据,循环神经网络能达到更好的效果.接着我将实战分析手写数字的 RNN分类
2.导入模块、定义超参数导入模块、定义超参数
import torch
from torch import nn
import numpy as np
import matplotlib.pyplot as plt
torch.manual_seed(1)
TIME_STEP = 10
INPUT_SIZE = 1
LR = 0.02
3.数据准备且打印拟合目标数据准备且打印拟合目标
我们要用到的数据就是这样的一些数据, 用 sin 的曲线预测出 cos 的曲线,也即用sin拟合cos
steps = np.linspace(0, np.pi*2, 100, dtype=np.float32) # float32 用于之后转化为torch FloatTensor
x_np = np.sin(steps)
y_np = np.cos(steps)
plt.plot(steps, y_np, 'g-', label='target (cos)')
plt.plot(steps, x_np, 'b-', label='input (sin)')
plt.legend(loc='best')
plt.show()
4.构建模型并打印模型结构构建模型并打印模型结构
class RNN(nn.Module):
def __init__(self):
super(RNN, self).__init__()
self.rnn = nn.RNN(
input_size=INPUT_SIZE,
hidden_size=32,
num_layers=1,
batch_first=True,
)
self.out = nn.Linear(32, 1)
def forward(self, x, h_state):
# x (batch, time_step, input_size)
# h_state (n_layers, batch, hidden_size)
# r_out (batch, time_step, hidden_size)
r_out, h_state = self.rnn(x, h_state) #传入当前输出和上一个隐状态
print(r_out.size(1))
outs = [] # 用于保存所有的预测
for time_step in range(r_out.size(1)):
outs.append(self.out(r_out[:, time_step, :]))
return torch.stack(outs, dim=1), h_state
rnn = RNN()
print(rnn)
5.损失函数和优化器损失函数和优化器
optimizer = torch.optim.Adam(rnn.parameters(), lr=LR)
loss_func = nn.MSELoss()
6.训练并打印拟合效果训练并打印拟合效果
h_state = None # 初始化第一个time step的上一个状态
plt.figure(1, figsize=(12, 5))



















假装高冷小姐姐
- 粉丝: 281
- 资源: 949
上传资源 快速赚钱
我的内容管理 收起
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助

会员权益专享
安全验证
文档复制为VIP权益,开通VIP直接复制

评论0