PyTorch -- RNN 快速实践

  • RNN Layer torch.nn.RNN(input_size,hidden_size,num_layers,batch_first)

    • input_size: 输入的编码维度
    • hidden_size: 隐含层的维数
    • num_layers: 隐含层的层数
    • batch_first: ·True 指定输入的参数顺序为:
      • x:[batch, seq_len, input_size]
      • h0:[batch, num_layers, hidden_size]
  • RNN 的输入

    • x:[seq_len, batch, input_size]
      • seq_len: 输入的序列长度
      • batch: batch size 批大小
    • h0:[num_layers, batch, hidden_size]
  • RNN 的输出

    • y: [seq_len, batch, hidden_size]

在这里插入图片描述


  • 实战之预测 正弦曲线:以下会以此为例,演示 RNN 预测任务的部署
    在这里插入图片描述
    • 步骤一:确定 RNN Layer 相关参数值并基于此创建 Net

      import numpy as np
      from matplotlib import pyplot as plt
      
      import torch
      import torch.nn as nn
      import torch.optim as optim
      
      
      seq_len     = 50
      batch       = 1
      num_time_steps = seq_len
      
      input_size  = 1
      output_size = input_size
      hidden_size = 10  	
      num_layers = 1  	
      batch_first = True 
      
      class Net(nn.Module):  ## model 定义
      	def __init__(self):
      		super(Net, self).__init__()
      		self.rnn = nn.RNN(
      		input_size=input_size,
      		hidden_size=hidden_size,
      		num_layers=num_layers,
      		batch_first=batch_first)
      		# for p in self.rnn.parameters():
      		# 	nn.init.normal_(p, mean=0.0, std=0.001)
      		self.linear = nn.Linear(hidden_size, output_size)
      
      	def forward(self, x, hidden_prev):
      		out, hidden_prev = self.rnn(<
03-08
### 循环神经网络(RNN)介绍 #### 基本概念 循环神经网络(Recurrent Neural Network, RNN)是一种用于处理序列数据的特殊类型的神经网络。不同于标准前馈神经网络仅考虑当前输入,RNN能够在处理过程中维持内部状态,从而允许其捕捉到时间上的依赖关系[^2]。 #### 工作原理 RNN的核心特点是具有反馈连接,这意味着在网络中的节点不仅接收来自上一层的信息,还会接收到之前时刻自身的输出作为新输入的一部分。这种机制让模型可以记住先前的数据点,在面对诸如文本、音频流等形式的时间序列时尤为有用[^4]。 ```python import torch.nn as nn class SimpleRNN(nn.Module): def __init__(self, input_size, hidden_size, output_size): super(SimpleRNN, self).__init__() self.hidden_size = hidden_size self.rnn = nn.RNN(input_size, hidden_size, batch_first=True) self.fc = nn.Linear(hidden_size, output_size) def forward(self, x, h0=None): out, hn = self.rnn(x, h0) out = self.fc(out[:, -1, :]) return out ``` 此Python代码片段展示了如何构建一个简单的基于PyTorch框架下的单层RNN结构。这里定义了一个`SimpleRNN`类继承自`nn.Module`, 并实现了基本的正向传播逻辑。 ### 应用场景 #### 自然语言处理(NLP) 由于能够有效建模词语间的顺序特性,RNN被广泛应用到了NLP任务当中,比如情感分析、机器翻译以及问答系统等。这些应用程序通常涉及到理解上下文语境并据此作出响应的能力,而这正是RNN擅长之处[^3]。 #### 时间序列预测 对于股票价格变动趋势预报或是天气变化模式估计等问题而言,历史记录往往蕴含着对未来发展的指示意义;而利用RNN来挖掘这类潜在规律,则可提高预测精度。此外,在物联网(IoT)设备监控方面也发挥重要作用——通过对传感器采集到的一系列数值进行实时评估预警异常状况的发生[^1]。 #### 音频信号处理 除了视觉和文字资料外,声音同样属于一种典型的连续型介质形式。因此当涉及到语音识别或者音乐生成这样的课题时,借助于具备记忆功能特性的RNN架构便显得尤为重要了。它可以帮助计算机更好地理解和模仿人类说话的方式或者是创作旋律优美的乐曲。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值