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

有趣的网站知乎建设部网站一级建造师

有趣的网站知乎,建设部网站一级建造师,wordpress做单页销售网站,新手学做网站vsGRU模型 随着深度学习领域的快速发展#xff0c;循环神经网络#xff08;RNN#xff09;已成为自然语言处理#xff08;NLP#xff09;等领域中常用的模型之一。但是#xff0c;在RNN中#xff0c;如果时间步数较大#xff0c;会导致梯度消失或爆炸的问题#xff0c;…GRU模型 随着深度学习领域的快速发展循环神经网络RNN已成为自然语言处理NLP等领域中常用的模型之一。但是在RNN中如果时间步数较大会导致梯度消失或爆炸的问题这影响了模型的训练效果。为了解决这个问题研究人员提出了新的模型其中GRU是其中的一种。 本文将介绍GRU的数学原理、代码实现并通过pytorch和sklearn的数据集进行试验最后对该模型进行总结。 数学原理 GRU是一种门控循环单元Gated Recurrent Unit模型。与传统的RNN相比它具有更强的建模能力和更好的性能。 重置门和更新门 在GRU中每个时间步有两个状态隐藏状态 h t h_t ht​和更新门 r t r_t rt​。。更新门控制如何从先前的状态中获得信息而隐藏状态捕捉序列中的长期依赖关系。 GRU的核心思想是使用“门”来控制信息的流动。这些门是由sigmoid激活函数控制的它们决定了哪些信息被保留和传递。 在每个时间步 t t tGRU模型执行以下操作 1.计算重置门 r t σ ( W r [ x t , h t − 1 ] ) r_t \sigma(W_r[x_t, h_{t-1}]) rt​σ(Wr​[xt​,ht−1​]) 其中 W r W_r Wr​是权重矩阵 σ \sigma σ表示sigmoid函数。重置门 r t r_t rt​告诉模型是否要忽略先前的隐藏状态 h t − 1 h_{t-1} ht−1​并只依赖于当前输入 x t x_t xt​。 2.计算更新门 z t σ ( W z [ x t , h t − 1 ] ) z_t \sigma(W_z[x_t, h_{t-1}]) zt​σ(Wz​[xt​,ht−1​]) 其中更新门 z t z_t zt​告诉模型新的隐藏状态 h t h_t ht​在多大程度上应该使用先前的状态 h t − 1 h_{t-1} ht−1​。 候选隐藏状态和隐藏状态 在计算完重置门和更新门之后我们可以计算候选隐藏状态 h ~ t \tilde{h}_{t} h~t​和隐藏状态 h t h_t ht​。 1.计算候选隐藏状态 h ~ t tanh ⁡ ( W [ x t , r t ∗ h t − 1 ] ) \tilde{h}_{t} \tanh(W[x_t, r_t * h_{t-1}]) h~t​tanh(W[xt​,rt​∗ht−1​]) 其中 W W W是权重矩阵。候选隐藏状态 h ~ t \tilde{h}_{t} h~t​利用当前输入 x t x_t xt​和重置门 r t r_t rt​来估计下一个可能的隐藏状态。 2.计算隐藏状态 h t ( 1 − z t ) ∗ h t − 1 z t ∗ h ~ t h_{t} (1 - z_t) * h_{t-1} z_t * \tilde{h}_{t} ht​(1−zt​)∗ht−1​zt​∗h~t​ 这是GRU的最终隐藏状态公式。它在候选隐藏状态 h ~ t \tilde{h}_{t} h~t​和先前的隐藏状态 h t h_t ht​之间进行加权其中权重由更新门 z t z_t zt​控制。 代码实现 下面是使用pytorch和sklearn的房价数据集实现GRU的示例代码 import torch import torch.nn as nn import torch.optim as optim from sklearn.datasets import load_boston from sklearn.preprocessing import StandardScaler import matplotlib.pyplot as plt# 加载数据集并进行标准化 data load_boston() X data.data y data.target scaler StandardScaler() X scaler.fit_transform(X) y y.reshape(-1, 1)# 转换为张量 X torch.tensor(X, dtypetorch.float32).unsqueeze(1) y torch.tensor(y, dtypetorch.float32)# 定义GRU模型 class GRUNet(nn.Module):def __init__(self, input_size, hidden_size, output_size):super(GRUNet, self).__init__()self.hidden_size hidden_sizeself.gru nn.GRU(input_size, hidden_size, batch_firstTrue)self.fc nn.Linear(hidden_size, output_size)def forward(self, x):out, _ self.gru(x)out self.fc(out[:, -1, :])return outinput_size X.shape[2] hidden_size 32 output_size 1 model GRUNet(input_size, hidden_size, output_size)# 定义损失函数和优化器 criterion nn.MSELoss() optimizer optim.Adam(model.parameters(), lr0.001)# 训练模型 num_epochs 10000 loss_list [] for epoch in range(num_epochs):optimizer.zero_grad()outputs model(X)loss criterion(outputs, y)loss.backward()optimizer.step()if (epoch1) % 100 0:loss_list.append(loss.item())print(fEpoch [{epoch1}/{num_epochs}], Loss: {loss.item()})# 可视化损失曲线 plt.plot(range(100), loss_list) plt.xlabel(num_epochs) plt.ylabel(loss of GRU Training) plt.show()# 预测新数据 new_data_point X[0].reshape(1, 1, -1) prediction model(new_data_point) print(fPredicted value: {prediction.item()})上述代码首先加载并标准化房价数据集然后定义了一个包含GRU层和全连接层的GRUNet模型并使用均方误差作为损失函数和Adam优化器进行训练。训练完成后使用matplotlib库绘制损失曲线如下图所示并使用训练好的模型对新的数据点进行预测。 总结 GRU是一种门控循环单元模型它通过更新门和重置门有效地解决了梯度消失或爆炸的问题。在本文中我们介绍了GRU的数学原理、代码实现和代码解释并通过pytorch和sklearn的房价数据集进行了试验。
http://www.hkea.cn/news/14370294/

相关文章:

  • 昌邑做网站的公司河南省网站制作公司
  • 上海专业网站建设网深圳松岗 网站建设
  • 网站建设信息介绍扫码员在哪个网站可以做
  • 怎么建设小说网站seogw
  • 建设网站说只给前端源码是什么意思wordpress 首页加载延迟
  • 个人网站如何做即时支付WordPress设置API
  • 株洲网站建设服务公司手机网站如何排版
  • 餐饮手机微网站怎么做深圳布吉做网站
  • html网站开发工具下载高端品牌女装连衣裙
  • 怎样建设淘宝网站如何制作小程序赚钱
  • 创建网站的费用台州免费建站
  • 网站备案产品信息错误青岛做网站建设的公司
  • 网站备案 快速wordpress register_setting
  • 网站开发怎么用自己的电脑福州网站建设找时时在网络
  • 网站上传文件不大于5M定么做网站做熊掌号码
  • 建站模板免费下载一个做炉石视频的网站
  • 全景图制作平台网站建设家装公司建设网站
  • 网站建设方案书网络部署方案企业商城网站建设开发
  • 个人域名备案做企业网站可视化开发工具推荐
  • 吉首公司网站找谁做wordpress 在线留言
  • 做姓氏图的网站佛山合展商务网站建设
  • 手机建站图片广州网站设计找谁
  • 温州网站建设方案开发百度搜索推广流程
  • 做网站如何对接支付宁阳县网络seo
  • 上海松江建设工程开发有限公司网站建网站英语怎么说
  • 广州云脑网站建设wordpress 相册 主题
  • 内链好的网站个人博客页面
  • 观澜网站建设公司河北定制网站建设产业
  • 郑州网站建设公司咨询如何在网站上显示百度权重
  • 网站建设什么服务器好百度seo是什么