动手学pytorch-循环神经网络基础

循环神经网络的构造

假设\(\boldsymbol{X}_t \in \mathbb{R}^{n \times d}\)是时间步\(t\)的小批量输入,\(\boldsymbol{H}_t \in \mathbb{R}^{n \times h}\)是该时间步的隐藏变量,则:

\[\boldsymbol{H}_t = \phi(\boldsymbol{X}_t \boldsymbol{W}_{xh} + \boldsymbol{H}_{t-1} \boldsymbol{W}_{hh} + \boldsymbol{b}_h). \]

其中,\(\boldsymbol{W}_{xh} \in \mathbb{R}^{d \times h}\)\(\boldsymbol{W}_{hh} \in \mathbb{R}^{h \times h}\)\(\boldsymbol{b}_{h} \in \mathbb{R}^{1 \times h}\)\(\phi\)函数是非线性激活函数。由于引入了\(\boldsymbol{H}_{t-1} \boldsymbol{W}_{hh}\)\(H_{t}\)能够捕捉截至当前时间步的序列的历史信息,就像是神经网络当前时间步的状态或记忆一样。由于\(H_{t}\)的计算基于\(H_{t-1}\),上式的计算是循环的,使用循环计算的网络即循环神经网络(recurrent neural network)。

在时间步\(t\),输出层的输出为:

\[\boldsymbol{O}_t = \boldsymbol{H}_t \boldsymbol{W}_{hq} + \boldsymbol{b}_q. \]

其中\(\boldsymbol{W}_{hq} \in \mathbb{R}^{h \times q}\)\(\boldsymbol{b}_q \in \mathbb{R}^{1 \times q}\)

手写实现循环网络

RNN类

定义预测函数

使用pytorch简洁实现

posted @   hou永胜  阅读(286)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示