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

搭建简单网站微信app小程序

搭建简单网站,微信app小程序,wordpress写公式,一个网站用多个域名GRU模型 随着深度学习领域的快速发展#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.zqtcl.cn/news/914215/

相关文章:

  • 学院宣传网站制作大型网站团队人数
  • 新品发布会ppt参考友山建站优化
  • 做网站云服务器装系统厦门网站建设哪家强
  • 网站建设顶呱呱东莞建设信息网官网
  • 化妆品网站下载企业宣传片报价明细
  • php建设网站怎么用网站建设忽悠
  • 网站软件app免费注册账号qq
  • 清河网站建设公司西安开发网站的公司
  • 怎么用自己的服务器做网站软件接口设计文档
  • 昆明做网站建设找谁郑州网站制作的公司哪家好
  • 天津seo网站推广如何做医美机构网站观察分析
  • 东莞网站到首页排名网站建设与设计主要是干什么的
  • 自己做网站要花钱吗个人网站可以做资讯吗
  • 做vr效果图的网站做小程序的公司有哪些比较好
  • 物流建设网站总结制作壁纸的软件
  • 自己电脑做主机怎么做网站培训公司排名
  • 网站seo优化排名qq空间wordpress搬家
  • 做二手元器件那个网站查价格元气森林网络营销策略分析
  • 优质网站建设是哪家17网站一起做网店不发货
  • 建设企业网银如何对账seo优化推广工程师
  • 广州制作外贸网站小说网站制作公司
  • 东莞南城网站建设价格注册深圳公司有什么好处
  • 做网站图片大小建个人网站要多少钱
  • 北京免费建网站seo网站关键词
  • 南宁网站制作公司dede网站建站教程
  • 辽宁省建设工程招标协会网站自建网站主题及策划
  • 石材做网站google建网站
  • 装配式建筑信息平台无忧seo博客
  • 做淘客网站用备案网络推广预算方案
  • 网站建设需不需要招标好网站欣赏