首页 > 其他分享 >利用深度学习实现序列模型

利用深度学习实现序列模型

时间:2023-04-28 15:35:47浏览次数:35  
标签:loss nn tau 模型 torch train 深度 序列 net

利用深度学习实现序列模型

序列问题的含义是接收一个序列作为输入,然后期望预测这个序列的后续。例如继续预测2,4,6,8,10...。这在时间序列中是相当常见的,可以用来预测股市的波动、患者的体温曲线或者赛车所需的加速度。
从原理上说,卷积神经网络可以有效处理空间信息,那么循环神经网络则能更好处理序列信息。

对超出已知观测范围进行预测称为外推法(extrapolation),而在现有观测值之间进行估计称为内插法(interpolation)。显然,外推法较内插法更为困难。预测未来明显是令人更兴奋的事。
例如股票预测问题,假设股票价格与之前某时刻的价格相关,因此有如下预测方法:
\(x_{t} \sim P(x_{t}|x_{t-1},\cdots ,x_{1})\), 其中\(x_{t}\)为t时刻的价格。

利用深度学习神经网络实现序列模型

  • 生成数据
    使用正弦函数和一些可加性噪声来生成序列数据
%matplotlib inline
import torch
from torch import nn
from d2l import torch as d2l

T = 1000 # 总共产⽣1000个点
time = torch.arange(1, T + 1, dtype=torch.float32)
x = torch.sin(0.01 * time) + torch.normal(0, 0.2, (T,))
d2l.plot(time, [x], 'time', 'x', xlim=[1, 1000], figsize=(6, 3))

使用前600个数据进行训练

tau = 4
features = torch.zeros((T - tau, tau))
for i in range(tau):
  features[:, i] = x[i: T - tau + i]
labels = x[tau:].reshape((-1, 1))
batch_size, n_train = 16, 600
# 只有前n_train个样本⽤于训练
train_iter = d2l.load_array((features[:n_train], labels[:n_train]),
batch_size, is_train=True)
  • 神经网络模型
# 初始化⽹络权重的函数
def init_weights(m):
    if type(m) == nn.Linear:
        nn.init.xavier_uniform_(m.weight)
# ⼀个简单的多层感知机
def get_net():
    net = nn.Sequential(nn.Linear(4, 10),
        nn.ReLU(),
        nn.Linear(10, 1))
    net.apply(init_weights)
    return net
# 平⽅损失。注意:MSELoss计算平⽅误差时不带系数1/2
loss = nn.MSELoss(reduction='none')
  • 模型训练
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}')

net = get_net()
train(net, train_iter, loss, 5, 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))

标签:loss,nn,tau,模型,torch,train,深度,序列,net
From: https://www.cnblogs.com/bonne-chance/p/17362317.html

相关文章

  • 深度分析:全球千亿美元市值IT企业榜单及点评
    CNET科技资讯网7月3日CWEEK/每周电脑报特稿(文/蒋湘辉):2008年6月不仅是中国股市大幅下滑的一月,全球资本市场上的表现也很不乐观,IT大企业更是如此。和2008年5月30日的市值相比,6月30日市值1000亿美元以上的IT企业没有一家上涨。有4家在5月30日市值超过1000亿美元的IT企业在6月30的......
  • 关于深度思考
    对任何领域要达到专家水平境界是一个非常困难的事情。对多数人而言,首要的是理解摆在他们面前的大量工作,并通过学习并获得直觉感悟,这些感悟促成了见识、格局的增长。自我境界(含见识、格局)的提升是一个漫长的过程,且是一个无法自我衡量的过程。但从大部分的生涯中总一下,其......
  • 怎样制作从负数开始的序列号
    在使用条码标签软件时,有的用户除了批量制作条码或二维码,也会制作一些序列号。我们通常用到的序列号都是0、1、……、8、9这种的,但是如果需要的序列号是从负数开始,像“-10、-9、-8、……0、1、2、3…”这种的(如下图),要怎么实现呢?下面我们演示一下在条码标签软件中制作从负数开始的序......
  • 相亲成功率100%!技术大佬都在用的SWOT模型【No.3】
    SWOT分析法,也称态势分析法或道斯矩阵。分别包含:内部要素的优势和劣势,外部要素的机会和威胁。SO:利用哪些优势,抓住市场机会ST:利用哪些优势,减少威胁OW:利用哪些机会,改善哪些劣势WT:在哪些威胁中改善哪些劣势刚京,男,32岁,职业:程序员。​如果刚......
  • Protostuff对象序列化工具
    VO.javaimportjava.io.Serializable;/***[概要]java对象序列化工具<br/>*[环境]J2SE1.7*@author研发部-ly*@version1.0*/publicclassVO<T>implementsSerializable{privateTvalue;publicVO(Tvalue){this.value=value;......
  • 高性能序列化、反序列化protostuff 使用
    1、引用jar包:pom.xml:<!--protostuff--><dependency><groupId>com.dyuproject.protostuff</groupId><artifactId>protostuff-core</artifactId><version>1.0.7</version>......
  • 面试官:说说你对序列化的理解
    关注“Java后端技术全栈”回复“000”获取大量电子书本文主要内容背景在Java语言中,程序运行的时候,会产生很多对象,而对象信息也只是在程序运行的时候才在内存中保持其状态,一旦程序停止,内存释放,对象也就不存在了。怎么能让对象永久的保存下来呢?--------对象序列化。何为序列化和反序......
  • 安装Amos结构方程模型分析软件的方法
      本文介绍IBMSPSSAmos软件的安装方法。  Amos是IBM公司旗下一款强大的结构方程建模软件。其捆绑在高级版的SPSSStatistics软件中,但其它版本的SPSSStatistics中并不含Amos,需要单独下载、安装。1软件下载  关于Amos软件下载,由于其版本较多,大家自行搜索需要的版本即可......
  • m基于信道差错概率模型仿真对比RS,汉明码以及卷积编译码性能,仿真输出信道差错概率与
    1.算法仿真效果matlab2022a仿真结果如下:        在数字通信系统中,数字通信系统及其相关部分必须满足误码率的最低规范要求。误码率是一个非常重要的指标,它衡量着系统性能的好坏,因此在数字通信领域中经常会遇到误码率的测试问题。误码率[是二进制比特流经过系统传......
  • Fastjson反序列化漏洞
    Fastjson反序列化漏洞目录Fastjson反序列化漏洞一、Fastjson介绍1、什么是fastjson?2、fastjson的优点二、影响范围:三、漏洞原理四、漏洞利用五、漏洞发现六、漏洞修复一、Fastjson介绍1、什么是fastjson?fastjson是阿里巴巴的开源JSON解析库,它可以解析JSON格式的字符串,支持将Ja......