如何进行RNN总结及sin与cos拟合应用
发表于:2026-11-04 作者:千家信息网编辑
千家信息网最后更新 2026年11月04日,如何进行RNN总结及sin与cos拟合应用,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。一、RNN总结一个简单的RNN模
千家信息网最后更新 2026年11月04日如何进行RNN总结及sin与cos拟合应用
如何进行RNN总结及sin与cos拟合应用,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。
一、RNN总结
一个简单的RNN模型由输入层,一个隐藏层,一个输出层组成。

我们给出这个抽象图对应的具体图,能够很清楚的看到,上一时刻的隐藏层是如何影响当前时刻的隐藏层的。

基于RNN还可以继续扩展到双向循环神经网络,深度循环神经网络。RNN公式如下:
定义RNN类,代码如下:
from torch import nnclass RNN(nn.Module): def __init__(self): super(RNN, self).__init__() self.rnn = nn.RNN( input_size=INPUT_SIZE, # The number of expected features in the input `x` hidden_size=32, # The number of features in the hidden state `h` num_layers=1, # Number of recurrent layers batch_first=True # batch维度是否在前,If ``True``, tensors as `(batch, seq, feature)` ) self.out = nn.Linear(32, 1) # 线性变换 def forward(self, x, h_state): out, h_state = self.rnn(x, h_state) return out, h_state
Tips: 1. RNN的训练算法是BPTT,它的基本原理核BP算法一致,包含同样的三个步骤:1) 前向计算每个神经元的输出值;2)反向计算每个神经元的误差项ᵟ_j值,它是误差函数E对神经元j的加权输出net_j的偏导数;3)计算每个权重的梯度。
2. RNN的梯度消失核爆炸,根据公式的指数形式,β大于或小于1都将造成梯度消失核爆炸问题。
如何避免:1) 梯度爆炸:设置一个梯度阈值,当梯度超过这个阈值的时候可以直接截取 (Gradient Clipping(pytorch nn.utils.clip_grad_norm )) ;好的参数初始化方式,如He初始化; 非饱和的激活函数(如 ReLU) ; 批量规范化(Batch Normalization); LSTM 。2)梯度消失:改进网络LSTM,加入了forget gate。
二、sin与cos拟合应用
函数sin拟合为cos,模型黑盒子类似sin(π/2+α)= cosα
import torchfrom torch import nnimport numpy as npimport matplotlib.pyplot as plt# 定义超参数TIME_STEP = 10INPUT_SIZE = 1learning_rate = 0.001class 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): # r_out.shape:seq_len,batch,hidden_size*num_direction(1,10,32) r_out, h_state = self.rnn(x, h_state) out = self.out(r_out).squeeze() return out, h_staternn = RNN()criterion = nn.MSELoss()optimizer = torch.optim.Adam(rnn.parameters(), lr=learning_rate)h_state = Noneplt.figure(1, figsize=(12, 5))plt.ion() # 开启动态交互for step in range(100): start, end = step * np.pi, (step + 1) * np.pi steps = np.linspace(start, end, TIME_STEP, dtype=np.float32, endpoint=False) x_np = np.sin(steps) # x_np.shape: 10 y_np = np.cos(steps) # y_np.shape: 10 x = torch.from_numpy(x_np[np.newaxis, :, np.newaxis]) # x.shape: 1,10,1 y = torch.from_numpy(y_np) # y.shape: 10 prediction, h_state = rnn(x, h_state) h_state = h_state.data loss = criterion(prediction, y) optimizer.zero_grad() loss.backward() optimizer.step() plt.plot(steps, y_np.flatten(), 'r-') plt.plot(steps, prediction.data.numpy().flatten(), 'b-') plt.draw() plt.pause(.05)plt.ioff()plt.show()
看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注行业资讯频道,感谢您对的支持。
梯度
神经
函数
神经元
网络
输出
应用
清楚
公式
参数
时刻
核爆
核爆炸
模型
神经网络
算法
误差
阈值
帮助
循环
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
百单网互联网科技有限公司
美国互联网保险保险科技
科技股互联网
互联网科技会
中国 科技 互联网
亿账通互联网科技
唐信互联网科技 大连
互联网科技博客
甘肃拓世互联网科技有限公司
老年人脱离互联网科技的作文
互联网之后的科技是什么
互联网科技中介
互联网系的金融科技公司
常德市电业局互联网科技部
互联网科技项目计划书材料类
受益于互联网科技的高速发展
黑科技 体验场景 互联网大会
每天都有哪些好的互联网科技
唯美互联网科技
前海云享互联网科技
美国互联网科技
人人互联网科技是培训
深圳卡尔迅互联网科技有限公司怎么样
海南购全球互联网科技
速维有品互联网信息科技(苏州)有限公司
威龙国际互联网科技公司
中天科技中国工业互联网
工业互联网科技创业
玉溪新华互联网科技怎么选
上海旺乐尼互联网科技有限公司