5.4 GRU模型

4 GRU模型


  • 学习目标:
    • 了解GRU内部结构及计算公式.
    • 掌握Pytorch中GRU工具的使用.
    • 了解GRU的优势与缺点.

  • GRU(Gated Recurrent Unit)也称门控循环单元结构, 它也是传统RNN的变体, 同LSTM一样能够有效捕捉长序列之间的语义关联, 缓解梯度消失或爆炸现象. 同时它的结构和计算要比LSTM更简单, 它的核心结构可以分为两个部分去解析:
    • 更新门
    • 重置门

  • 4.1 GRU的内部结构图和计算公式:


  • 结构解释图:


  • 4.2 GRU的更新门和重置门结构图:


  • 内部结构分析:
    • 和之前分析过的LSTM中的门控一样, 首先计算更新门和重置门的门值, 分别是z(t)和r(t), 计算方法就是使用X(t)与h(t-1)拼接进行线性变换, 再经过sigmoid激活. 之后更新门门值作用在了h(t-1)上, 代表控制上一时间步传来的信息有多少可以被利用. 接着就是使用这个更新后的h(t-1)进行基本的RNN计算, 即与x(t)拼接进行线性变化, 经过tanh激活, 得到新的h(t). 最后重置门的门值会作用在新的h(t),而1-门值会作用在h(t-1)上, 随后将两者的结果相加, 得到最终的隐含状态输出h(t), 这个过程意味着重置门有能力重置之前所有的计算, 当门值趋于1时, 输出就是新的h(t), 而当门值趋于0时, 输出就是上一时间步的h(t-1).

  • Bi-GRU与Bi-LSTM的逻辑相同, 都是不改变其内部结构, 而是将模型应用两次且方向不同, 再将两次得到的LSTM结果进行拼接作为最终输出. 具体参见上小节中的Bi-LSTM.

  • 1
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Gru模型是一种循环神经网络模型,它采用门控机制来控制信息的流动和保留,以更好地捕捉序列数据中的长期依赖关系。 以下是一个使用Python编写的简单的GRU模型代码: ```python import tensorflow as tf from tensorflow.keras.layers import GRU, Dense # 定义GRU模型 def create_gru_model(input_shape, num_classes): model = tf.keras.Sequential() model.add(GRU(64, return_sequences=True, input_shape=input_shape)) model.add(GRU(32)) model.add(Dense(num_classes, activation='softmax')) return model # 模型参数 input_shape = (10, 5) # 输入序列长度为10,特征维度为5 num_classes = 3 # 类别数量为3 # 创建GRU模型 model = create_gru_model(input_shape, num_classes) # 编译模型 model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy']) # 训练模型 model.fit(X_train, y_train, epochs=10, batch_size=32, validation_data=(X_val, y_val)) # 使用模型进行预测 y_pred = model.predict(X_test) ``` 在这个例子中,我们使用了TensorFlow的`GRU`层来构建GRU模型。首先创建一个顺序模型,然后在模型中添加两层GRU层,分别具有64个和32个单元。最后通过添加一个全连接层`Dense`并使用softmax激活函数输出类别概率。我们使用adam优化器,交叉熵损失函数进行编译,并使用训练数据集进行训练。最后,我们可以使用训练好的模型对测试数据进行预测。 当然,这只是一个简单的例子来演示如何使用Python编写GRU模型代码。实际中,根据具体的任务需求,还可以对模型进行更复杂的调整和优化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值