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

提供企业网站建设公司网站ui设计是什么

提供企业网站建设公司,网站ui设计是什么,电子商务网站运营方案,上海房屋装修公司实力排名目录 一、GRU结构 二、GRU核心思想 1、更新门#xff08;Update Gate#xff09;#xff1a;决定了当前时刻隐藏状态中旧状态和新候选状态的混合比例。 2、重置门#xff08;Reset Gate#xff09;#xff1a;用于控制前一时刻隐藏状态对当前候选隐藏状态的影响程度。…目录 一、GRU结构 二、GRU核心思想 1、更新门Update Gate决定了当前时刻隐藏状态中旧状态和新候选状态的混合比例。 2、重置门Reset Gate用于控制前一时刻隐藏状态对当前候选隐藏状态的影响程度。 3、候选隐藏状态Candidate Hidden State生成当前隐藏状态的候选值 三、GRU 分步演练 1、输入与初始化 2、计算重置门 3、计算候选隐藏状态 4、计算更新门 5、计算当前隐藏状态 四、代码实现 1、任务: 2、做法 3、主要修改点 4、具体代码 5、结果 GRU是一种循环神经网络RNN的变体由Cho等人在2014年提出。相比于传统的RNNGRU引入了门控机制可以通过该机制来确定应该何时更新隐状态以及应该何时重置隐状态使得网络能够更好地捕捉长期依赖性同时减少了梯度消失的问题。 一、GRU结构 GRU的结构和基础的RNN相比并没有特别大的不同都是一种重复神经网络模块的链式结构由输入层、隐藏层和输出层组成其中隐藏层是其核心部分包含了门控机制相关的计算单元。 二、GRU核心思想 与LSTM不同GRU没有细胞状态而是直接使用隐藏状态。GRU由两个门控制更新门Update Gate和重置门Reset Gate。 1、更新门Update Gate决定了当前时刻隐藏状态中旧状态和新候选状态的混合比例。 2、重置门Reset Gate用于控制前一时刻隐藏状态对当前候选隐藏状态的影响程度。 补充 3、候选隐藏状态Candidate Hidden State生成当前隐藏状态的候选值 三、GRU 分步演练 1、输入与初始化 假设我们有一个输入序列 X[x1​,x2​,...,xT​]其中 xt​ 是第 t 个时间步的输入。初始化隐藏状态 h0​通常为零向量或随机初始化。 2、计算重置门 重置门 rt​ 决定了前一时间步的隐藏状态 ht−1​ 对当前候选隐藏状态 h~t​ 的影响程度。                                      其中 σ 是sigmoid函数Wr​ 和 Ur​ 是可训练的权重矩阵。 3、计算候选隐藏状态 使用重置门 rt​ 来控制前一时间步的隐藏状态 ht−1​ 的影响。                       其中 ⊙ 表示元素乘法tanh 是双曲正切函数W 和 U 是可训练的权重矩阵。 4、计算更新门 更新门 zt​ 决定了当前隐藏状态 ht​ 应该保留多少前一时间步的隐藏状态 ht−1​ 和多少当前候选隐藏状态 h~t​。            其中 Wz​ 和 Uz​ 是可训练的权重矩阵。 5、计算当前隐藏状态 使用更新门 zt​ 来组合前一时间步的隐藏状态 ht−1​ 和当前候选隐藏状态 h~t​。 四、代码实现 1、任务: 根据一个包含道路曲率Curvature、车速Velocity、侧向加速度Ay和方向盘转角Steering_Angle真实的数据集去预测未来的方向盘转角。 2、做法 提取前5个历史曲率、速度、方向盘转角作为输入特征同时添加后5个未来曲率由于车辆的预瞄距离。目标输出为未来5个方向盘转角。采用GRU网络训练。 3、主要修改点 模型定义将 LSTM 替换为 GRU并更新模型类名为 GRUModel。前向传播forward 方法中相应地使用 GRU 的输出。 4、具体代码 # GRU 模型 import pandas as pd import numpy as np import torch import torch.nn as nn import torch.optim as optim from sklearn.model_selection import train_test_split from sklearn.preprocessing import StandardScaler from sklearn.metrics import mean_absolute_error as mae, r2_score import matplotlib.pyplot as plt# 1. 数据预处理 # 读取数据 data pd.read_excel(input_data_20241010160240.xlsx) # 替换为你的数据文件路径 # 提取特征和标签 curvature data[Curvature].values velocity data[Velocity].values steering data[Steering_Angle].values# 定义历史和未来的窗口大小 history_size 5 future_size 5features [] labels [] for i in range(history_size, len(data) - future_size):# 提取前5个历史的曲率、速度和方向盘转角history_curvature curvature[i - history_size:i]history_velocity velocity[i - history_size:i]history_steering steering[i - history_size:i]# 提取后5个未来的曲率用于预测future_curvature curvature[i:i future_size]# 输入特征历史 未来曲率feature np.hstack((history_curvature, history_velocity, history_steering, future_curvature))features.append(feature)# 输出标签未来5个方向盘转角label steering[i:i future_size]labels.append(label)# 转换为 NumPy 数组 features np.array(features) labels np.array(labels)# 归一化 scaler_x StandardScaler() scaler_y StandardScaler()features scaler_x.fit_transform(features) labels scaler_y.fit_transform(labels)# 划分训练集和测试集 x_train, x_test, y_train, y_test train_test_split(features, labels, test_size0.05)# 将特征转换为三维张量形状为 [样本数, 时间序列长度, 特征数] input_feature_size history_size * 3 future_size # 历史曲率、速度、方向盘转角 未来曲率 x_train_tensor torch.tensor(x_train, dtypetorch.float32).view(-1, 1, input_feature_size) # [batch_size, seq_len1, input_size] y_train_tensor torch.tensor(y_train, dtypetorch.float32).view(-1, future_size) # 输出未来的5个方向盘转角 x_test_tensor torch.tensor(x_test, dtypetorch.float32).view(-1, 1, input_feature_size) y_test_tensor torch.tensor(y_test, dtypetorch.float32).view(-1, future_size)# 2. 创建GRU模型 class GRUModel(nn.Module):def __init__(self, input_size, hidden_size, num_layers, output_size):super(GRUModel, self).__init__()self.hidden_size hidden_sizeself.num_layers num_layersself.gru nn.GRU(input_size, hidden_size, num_layers, batch_firstTrue) # 使用GRUself.fc nn.Linear(hidden_size, output_size) # 输出层def forward(self, x):# 前向传播out, _ self.gru(x) # GRU输出out self.fc(out[:, -1, :]) # 只取最后一个时间步的输出return out# 实例化模型 input_size input_feature_size # 输入特征数 hidden_size 64 # 隐藏层大小 num_layers 2 # GRU层数 output_size future_size # 输出5个未来方向盘转角 model GRUModel(input_size, hidden_size, num_layers, output_size)# 3. 设置损失函数和优化器 criterion nn.MSELoss() optimizer optim.Adam(model.parameters(), lr0.001)# 4. 训练模型 num_epochs 1000 for epoch in range(num_epochs):model.train()# 前向传播outputs model(x_train_tensor)loss criterion(outputs, y_train_tensor)# 后向传播和优化optimizer.zero_grad()loss.backward()optimizer.step()if (epoch 1) % 100 0:print(fEpoch [{epoch 1}/{num_epochs}], Loss: {loss.item():.4f})# 5. 预测 model.eval() with torch.no_grad():y_pred_tensor model(x_test_tensor)y_pred scaler_y.inverse_transform(y_pred_tensor.numpy()) # 将预测值逆归一化 y_test scaler_y.inverse_transform(y_test_tensor.numpy()) # 逆归一化真实值# 评估指标 r2 r2_score(y_test, y_pred, multioutputuniform_average) # 多维输出下的R^2 mae_score mae(y_test, y_pred) print(fR^2 score: {r2:.4f}) print(fMAE: {mae_score:.4f})# 支持中文 plt.rcParams[font.sans-serif] [SimSun] # 用来正常显示中文标签 plt.rcParams[axes.unicode_minus] False # 用来正常显示负号# 绘制未来5个方向盘转角的预测和真实值对比 plt.figure(figsize(10, 6)) for i in range(future_size):plt.plot(range(len(y_test)), y_test[:, i], labelf真实值 {i1} 步, colorblue)plt.plot(range(len(y_pred)), y_pred[:, i], labelf预测值 {i1} 步, colorred) plt.xlabel(样本索引) plt.ylabel(Steering Angle) plt.title(未来5个方向盘转角的实际值与预测值对比图) plt.legend() plt.grid(True) plt.show()# 计算预测和真实方向盘转角的平均值 y_pred_mean np.mean(y_pred, axis1) # 每个样本的5个预测值取平均 y_test_mean np.mean(y_test, axis1) # 每个样本的5个真实值取平均# 绘制平均值的实际值与预测值对比图 plt.figure(figsize(10, 6)) plt.plot(range(len(y_test_mean)), y_test_mean, label真实值平均, colorblue) plt.plot(range(len(y_pred_mean)), y_pred_mean, label预测值平均, colorred) plt.xlabel(样本索引) plt.ylabel(Steering Angle (平均)) plt.title(未来5个方向盘转角的平均值对比图) plt.legend() plt.grid(True) plt.show()# 绘制第1个时间步的实际值与预测值对比图 plt.figure(figsize(10, 6)) plt.plot(range(len(y_test)), y_test[:, 0], label真实值 (第1步), colorblue) plt.plot(range(len(y_pred)), y_pred[:, 0], label预测值 (第1步), colorred) plt.xlabel(样本索引) plt.ylabel(Steering Angle) plt.title(未来第1步方向盘转角的实际值与预测值对比图) plt.legend() plt.grid(True) plt.show()# 计算每个时间步的平均绝对误差 time_steps y_test.shape[1] mae_per_step [mae(y_test[:, i], y_pred[:, i]) for i in range(time_steps)]# 绘制每个时间步的平均绝对误差 plt.figure(figsize(10, 6)) plt.bar(range(1, time_steps 1), mae_per_step, colororange) plt.xlabel(时间步) plt.ylabel(MAE) plt.title(不同时间步的平均绝对误差) plt.grid(True) plt.show()5、结果 五、总结 GRU是LSTM的简化版本减少了门的数量使得训练和推理速度更快。它在许多序列建模任务中表现良好适用于时间序列预测、自然语言处理等领域。
http://www.w-s-a.com/news/438140/

相关文章:

  • 淘宝客需要自己做网站吗四川遂宁做网站的公司
  • 编写网站策划书缘魁上海网站建设
  • 梧州外贸网站推广设计wordpress 上传 七牛
  • 增加网站备案千灯做网站
  • 深圳做网站的公php做简易网站
  • 徐州哪家做网站好商业空间设计效果图
  • 重庆建网站cqiezscom大学毕业做网站插画师好吗
  • 在门户网站做产品seo怎么样做网站管理员
  • 动画做视频在线观看网站字体安装+wordpress
  • vs2015网站开发做珠宝建个网站推广怎么样
  • 大桥外语官方网站星做宝贝佛山微信网站开发
  • 河南建设网站公司哪家好怎样做一家网站
  • 安阳市哪里做网站建设网站流量怎么赚钱
  • 网站开发与优化课程总结软件班级网站建设
  • py网站开发wordpress 公司网站 模板 下载
  • 长春城乡建设部网站首页英文网站推广服务
  • wordpress实训上海整站seo
  • 福建自己建设网站义乌市企推网络科技有限公司
  • 宁波优化网站哪家好织梦网站地图怎么做
  • 怎么在自己的网站加关键词烟台企业网站建设
  • 中山网站建设界面设计职业技能等级证书
  • 做网站首页多少钱免费版企业邮箱注册
  • ppp模式在网站建设的南昌专业做网站公司哪家好
  • 泰安网站建设制作电话号码百度sem竞价托管公司
  • 苏网站建设网页设计和网页美工
  • 跨境电商平台网站广州地铁站路线图
  • 吉林省交通建设集团有限公司网站企业网站推广的策略有哪些
  • 网站内链怎么做更好郑州网站建设哪家便宜
  • 建设大型购物网站运城哪里做网站
  • php企业网站通讯录管理系统做网站在线支付系统多少钱?