当前位置: 首页 > news >正文

26.序列模型

1.单步预测模型

%matplotlib inline
import torch
from torch import nn
from d2l import torch as d2l###############################################################################################################
# 初始化网络权重的函数
def init_weights(m):if type(m) == nn.Linear:nn.init.xavier_uniform_(m.weight)# 一个简单的多层感知机mlp
def get_net():net = nn.Sequential(nn.Linear(4, 10),nn.ReLU(),nn.Linear(10, 1))net.apply(init_weights)return net
def train(net, train_iter, loss, epochs, lr):trainer = torch.optim.Adam(net.parameters(), lr)for epoch in range(epochs):for X, y in train_iter:trainer.zero_grad()l = loss(net(X), y)l.sum().backward()trainer.step()print(f'epoch {epoch + 1}, 'f'loss: {d2l.evaluate_loss(net, train_iter, loss):f}')
###############################################################################################################
#准备数据集:生成一个sin的噪声函数:       
T,tau =1000,4  
time = torch.arange(1, T + 1, dtype=torch.float32)
x = torch.sin(0.01 * time) + torch.normal(0, 0.2, (T,))
features = torch.zeros((T - tau, tau))#训练数吃从第5个开始-1000个
for i in range(tau):features[:, i] = x[i: T - tau + i]
labels = x[tau:].reshape((-1, 1))
batch_size, n_train = 16, 600#600个样本用于训练(X1,X2,X3,X4) LABEL=X5 
train_iter = d2l.load_array((features[:n_train], labels[:n_train]),batch_size, is_train=True)
net = get_net()
loss = nn.MSELoss(reduction='none')
train(net, train_iter, loss, 10, 0.01)
onestep_preds = net(features)
d2l.plot([time, time[tau:]],[x.detach().numpy(), onestep_preds.detach().numpy()], 'time','x', legend=['data', '1-step preds'], xlim=[1, 1000],figsize=(6, 3))
###############################################################################################################

2.多步预测模型

multistep_preds = torch.zeros(T)
multistep_preds[: n_train + tau] = x[: n_train + tau]
for i in range(n_train + tau, T):multistep_preds[i] = net(multistep_preds[i - tau:i].reshape((1, -1)))
d2l.plot([time, time[tau:], time[n_train + tau:]],[x.detach().numpy(), onestep_preds.detach().numpy(),multistep_preds[n_train + tau:].detach().numpy()], 'time','x', legend=['data', '1-step preds', 'multistep preds'],xlim=[1, 1000], figsize=(6, 3))

max_steps = 64
features = torch.zeros((T - tau - max_steps + 1, tau + max_steps))
# 列i(i<tau)是来自x的观测,其时间步从(i)到(i+T-tau-max_steps+1)
for i in range(tau):features[:, i] = x[i: i + T - tau - max_steps + 1]# 列i(i>=tau)是来自(i-tau+1)步的预测,其时间步从(i)到(i+T-tau-max_steps+1)
for i in range(tau, tau + max_steps):features[:, i] = net(features[:, i - tau:i]).reshape(-1)
steps = (1, 4, 16, 64)
d2l.plot([time[tau + i - 1: T - max_steps + i] for i in steps],[features[:, (tau + i - 1)].detach().numpy() for i in steps], 'time', 'x',legend=[f'{i}-step preds' for i in steps], xlim=[5, 1000],figsize=(6, 3))

http://www.dtcms.com/a/574686.html

相关文章:

  • 安阳网站建设商祺wordpress qq登入设置
  • AtCoder Beginner Contest 430(ABCDEF)
  • 公关做的好的网站网络科技公司一般是做什么的
  • 高端制作网站服务用织梦做外文网站
  • postgres15 flink cdc同步测试
  • 做网站策划案自己做的腾讯充值网站
  • 网站建设经理岗位职责soho网站建设教程
  • 【数据集+完整源码】马数据集,马行为状态识别数据集 3006 张,yolov8目标检测牧场草原马识别算法实战训推教程
  • 网站开发公司云鲸互创实惠同企网站建设做网站
  • 企业网站建设上机考试开源网站后台管理系统
  • 工业互联网赋能——解读企业管理数字化转型架构设计思路【附全文阅读】
  • 行业网站解决方案免费做金融网站
  • [MT6631] MT6835+MT6631 5G WiFi hostapd信道与频宽配置说明
  • 手机网站建设开发报价页面设计按钮
  • 网站开发与维护介绍前端页面设计软件
  • Unity 显示git分支
  • 免费做相册视频网站荣县住房和城乡建设厅网站
  • 网站论坛建设需要什么资质可以免费做兼职的网站有哪些
  • 湖北专业网站建设质量保障北京网站制作工具
  • 域名 备案 网站怎么做微信网站
  • wordpress 网站播放器插件wordpress seo联接插件
  • 自己建设网站在哪里建设优秀的商城网站首页设计
  • 推广网站弄哪家好镇江手机网站制作
  • GitCode「开源星期六」第三期回顾:鸿蒙 AI 融合开发的新突破与实践路径
  • 仿站小工具官网互联网有哪些行业
  • 前端学习手机网站开发吗黄页网站建设
  • 网站购物车设计北京工程建设交易中心网站
  • 用dw做网站怎么换行唐山网站建设技术支持
  • 如何自己建网站服务器双wordpress自动同步文章
  • 湖南企业网站制作国外毕业设计网站