RNN介绍及Pytorch源码解析

介绍一下RNN模型的结构以及源码,用作自己复习的材料。 

RNN模型所对应的源码在:\PyTorch\Lib\site-packages\torch\nn\modules\RNN.py文件中。

RNN的模型图如下:

源码注释中写道,RNN的数学公式:

h_t = \tanh(W_{ih} x_t + b_{ih} + W_{hh} h_{(t-1)} + b_{hh})

h_t表示在t时刻的隐藏状态,

x_t表示在t时刻的输入,

h_{t-1}表示前一层在时间t-1的隐藏状态,或者是在时间“0”的初始隐藏状态。

接下来我们看一下源码中RNN类的初始化(只介绍几个重要的参数):

torch.nn.RNN(self, input_size, hidden_size, num_layers=1, 
             nonlinearity='tanh', bias=True, batch_first=False, 
             dropout=0.0, bidirectional=False, device=None, dtype=None)

  • input_size:输入数据中的特征数(可以理解为嵌入维度 embedding_dim)。
  • hidden_size:处于隐藏状态 h 的特征数(可以理解为输出的特征维度)。
  • num_layers:代表着RNN的层数,默认是1(层),当该参数大于零时,又称为多层RNN。
  • bidirectional:即是否启用双向RNN,默认关闭。

下面是输入部分:

这是Pytorch官方文档中给出的解释:

输入分为input和h_0,当没有提供h_0的时候,h_0默认为0。

当batch_size == Ture时,输入的维度一般为(batch_size * seq_len * emb_dim)。

下面是输出部分:

其中output的维度为(batch_size * seq_len * hidden_size * bidirectional

其中bidirectional表示RNN是双向还是单向的,单向为1,双向为2。

下面使用代码举例:

import torch
import torch.nn as nn
rnn1 = nn.RNN(input_size=20,hidden_size=40,num_layers=4,bidirectional=True)
rnn2 = nn.RNN(input_size=20,hidden_size=40,num_layers=4,bidirectional=False)
tensor1 = torch.randn(5,10,20)
tensor2 = torch.randn(5,10,20)
out1,h_n = rnn1(tensor1)
out2,h_n = rnn2(tensor2)
print(out1.shape) # torch.Size([5, 10, 80])
print(out2.shape) # torch.Size([5, 10, 40])

可以看到当bidirectional=True时,输出的特征维度是hidden_size * 2;

可以看到当bidirectional=False时,输出的特征维度是hidden_size * 1;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/245389.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

渗透测试框架——Cobalt Strike

渗透测试框架——Cobalt Strike Cobalt Strike是一款非常成熟的渗透测试框架。Cobalt Strike在3.0版本之前是基于Metasploit框架工作的,可以使用Metasploit的漏洞库。从3.0版本开始,Cobalt Strike不再使用Metasploit的漏洞库,成为一个独立的…

每日好题:原来你也玩三国杀(DP动态规划)

I - 原来你也玩三国杀 Description 小 Q 最近听说 “很多” acmer 都爱上了一款游戏《三国杀》。因为小 Q 是一个初学者,所以想自己先偷偷学习一下,然后惊艳所有人。但又因为小 Q 不屑于使用一般的武将,因为他觉得唯有操作型武将才能显得自…

性能监控软件:优化系统运行的得力助手

随着科技的飞速发展,企业和组织对于其信息技术基础设施的性能要求也愈发提高。为了确保系统能够高效稳定地运行,性能监控软件成为不可或缺的工具。本文将探讨性能监控软件的主要作用,以及它们在提升系统性能和稳定性方面的关键作用。 1. 实时…

学习MS Dynamics AX 2012编程开发 1. 了解Dynamics AX 2012

在本章中,您将了解开发环境的结构以及Microsoft Dynamics AX中的开发人员可以访问哪些工具。在本书的第一步演练之后,您将很容易理解著名的Hello World代码,您将知道应用程序对象树中的不同节点代表什么。 以下是您将在本章中学习的一些主题…

10、ble_mesh_node服务节点示例

1。手机APP选择名字,点击provisioner App keys,识别,配网。 2。初始化流程, board_init()初始化IO,初始化存储, bluetooth_init()蓝牙初始化,ble_mesh_get_dev_uuid(dev_uuid)蓝牙组网初始化, 3、蓝牙组网初…

MyBatis缓存机制流程分析

前言 在进行分析之前,建议快速浏览之前写的理解MyBatis原理、思想,这样更容易阅读、理解本篇内容。 验证一级缓存 MyBatis的缓存有两级,一级缓存默认开启,二级缓存需要手动开启。 重复读取跑缓存 可以看到,第二次…

[MySQL] MySQL中的索引

文章目录 一、初识索引 1、1 索引的概念 1、2 索引案例 二、认识磁盘 2、1 磁盘结构 2、2 操作系统与磁盘的数据交互 2、3 磁盘随机访问与连续访问 2、4 MySQL与磁盘的数据交互 三、索引的理解 3、1 建立测试表 3、2 为何MySQL与磁盘IO交互是 Page 3、3 理解Page 3、3、1 页目录…

【WSL】Windows下的Linux子系统使用方法指南

▒ 目录 ▒ 🛫 导读需求开发环境 1️⃣ WSL安装启用或关闭windows功能安装分发命令行启动Linux 2️⃣ WSL 的基本命令显示帮助列出可用的 Linux 发行版列出已安装的 Linux 发行版检查 WSL 版本更新 WSL通过 PowerShell 或 CMD 运行特定的 Linux 发行版关闭WSL全部服…

Centos7防火墙及端口开启

1、防火墙 1.1、查看防火墙是否开启 systemctl status firewalld 1.2、开启防火墙 firewall-cmd --list-ports 1.3、重启防火墙 firewall-cmd --reload 2、端口 2.1、查看所有已开启的端口号 firewall-cmd --list-ports 2.2、手动开启端口 启动防火墙后,默认没有开…

智能优化算法应用:基于共生生物算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用:基于共生生物算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用:基于共生生物算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.共生生物算法4.实验参数设定5.算法结果6.…

1、springboot项目运行报错

问题1:获取不到配置文件的参数 我的配置文件获取的参数如下: public class Configures{Value("${configmdm.apk.apkName}")private static String apkName;private void setApkName(String apkName) {Configures.apkName apkName;}private …

【亚马逊云科技】通过高性能低延迟对象存储 S3实现网站资源托管

本篇文章授权活动官方亚马逊云科技文章转发、改写权,包括不限于在 亚马逊云科技开发者社区, 知乎,自媒体平台,第三方开发者媒体等亚马逊云科技官方渠道 文章目录 前言1 S3 介绍1.1 优点 2 使用步骤2.1 注册账户2.2 创建存储桶2.2.1 打开控制…

C/C++常见面试题(二)

接前面C/C常见面试题(一),继续巩固 目录 1 sizeof和strlen的区别 2 宏定义的陷阱 3 不使用sizeof计算出类型或者变量所占的内存的字节数 4 给定一个数判断是否其是2的N次幂 5 C/C打印所在文件、行号、函数、日期,时间、遵循的…

每日分享,以元旦为题的诗词

元旦佳节即将来临,相信大家都会在朋友圈表达一下自己的情感,不管大家以前是怎么表达的,今天小编给你分享几首以元旦为题的几首诗,喜欢的朋友可以自取,想要更多免费的诗词,请自行百度或小程序搜索&#xff1…

智能守护,数据安全稳中求胜!上海迅软DSE助力家具家电行业引领潮流!

随着中国经济的蓬勃发展,家具家电企业正迎来“精品制造”的时代,业内竞争日益激烈。为了提升产品竞争力、扩大市场占有率,企业亟需加强对自主品牌的安全建设,确保品牌的自主知识产权、产品生产资料以及销售信息等核心数据不受泄漏…

C++二维数组(2)

图形相似度 题目描述: 给出两幅相同大小的黑白图像(用0-1矩阵)表示,求它们的相似度。 说明:若两幅图像在相同位置上的像素点颜色相同,则称它们在该位置具有相同的像素点。 两幅图像的相似度定义为相同像素…

为什么阿里云不能免费帮用户无限抵御DDoS攻击

DDoS防御需要成本,其中最大的成本就是带宽费用。带宽是阿里云向电信、联通、移动等运营商购买,运营商计算带宽费用时不会把DDoS攻击流量清洗掉,而是直接收取阿里云的带宽费用。阿里云云盾在控制成本的情况下会尽量为阿里云用户免费防御 DDoS攻…

PXI总线测试模块-6935B 微波本振源

6935B 微波本振源 PXI总线测试模块 650MHz~10GHz 01 产品综述 6935B微波本振源采用3U 2槽PXIe结构形式,具有频率范围宽、相位噪声低、频率分辨力高、体积小等优点。其优异的性能使其可适用于通信以及导航设备等众多领域产品的研发、生产、检测与维护中&#xff0c…

neuq-acm预备队训练week 9 P3367 【模板】并查集

题目描述 如题&#xff0c;现在有一个并查集&#xff0c;你需要完成合并和查询操作。 输入格式 解题思路 并查集的用法 AC代码 #include <bits/stdc.h> using namespace std; #define Max 1000001 int zi,xi[Max],yi[Max],Fa[Max]; int find(int x); bool qu(int u,…

垃圾回收 (GC) 在 .NET Core 中是如何工作的?

提起GC大家肯定不陌生&#xff0c;但是让大家是说一下GC是怎么运行的&#xff0c;可能大多数人都不太清楚&#xff0c;这也很正常&#xff0c;因为GC这东西在.NET基本不用开发者关注&#xff0c;它是依靠程序自动判断来释放托管堆的&#xff0c;我们基本不需要主动调用Collect(…