pytorch之 RNN 参数解释
上次通过pytorch实现了RNN模型,简易的完成了使用RNN完成mnist的手写数字识别,但是里面的参数有点不了解,所以对问题进行总结归纳来解决。
总述:
第一次看到这个函数时,脑袋有点懵,总结了下总共有五个问题:
1.这个input_size是啥?要输入啥?feature num又是啥?
2.这个hidden_size是啥?要输入啥?feature num又是啥?
3.不是说RNN会有很多个节点连在一起的吗?这怎么定义连接的节点数呢?
4.num_layer中说的stack是怎么stack的?
5.怎么输出会有两个东西呀output,hn
pytorch中RNN的一些参数,并且解决以上五个问题
1.Pytorch中的RNN

2.input_size是啥?
说白了input_size无非就是你输入RNN的维度,比如说NLP中你需要把一个单词输入到RNN中,这个单词的编码是300维的,那么这个input_size就是300.这里的input_size其实就是规定了你的输入变量的维度。用f(wX+b)来类比的话,这里输入的就是X的维度。
3.hidden_size是啥?
和最简单的BP网络一样的,每个RNN的节点实际上就是一个BP嘛,包含输入层,隐含层,输出层。这里的hidden_size呢,你可以看做是隐含层中,隐含节点的个数。

那个输入层的三个节点代表输入维度为3,也就是input_size=3,然后这个hidden_size就是5了。当然这是是对于RNN某一个节点而言的,那么如何规定RNN的节点个数呢?
4.如何规定节点个数?
事实上,节点个数并不需要规定,你的输入序列是这样子的,[x1,x2,x3,x4,x5],那么input_size呢就是你的xi的维度,而你的RNN的节点数呢,就是由你的序列长度决定的,在这里我们的序列长度是5,所以会有5个节点。那么问题来了,我咋知道你的序列长度呢?pytorch里面不是只有input_size的参数吗?实际上,你声明RNN是这样声明的
self.encoder = nn.RNN(input_size=300,hidden_size=128,dropout=0.5)
但是你用的时候;
output,hn = self.encoder(encoder_input,encoder_hidden)
你会把你的数据丢进去吧,也就是你把encoder_input这一整个序列丢进去了,那么序列长度他不就知道了?
5.num_layers是啥?
一开始你是不是以为这个就是RNN的节点数呀,hhh,然而并不是:),如果num_layer=2的话,表示两个RNN堆叠在一起。那么怎么堆叠的呢?
如果是num_layer==1的话:

如果num_layer==2的话:

ok了~最后再来看看最后一个问题
6.hn,output分别是啥?
hidden的输出size为[ num_layers* num_directions, batch_size, n_hidden].
说白了,hidden就是每个方向,每个层的 隐藏单元的输出,所以是n_hidden个。
output的size(如果RNN设定的batch_first=True),那么就是[batch_size,seq_len,n_hidden],对于分类任务如果要取得最后一个output,只需添加下标 [ :,-1,:]
看图找答案:

hn就是RNN的最后一个隐含状态,output就是RNN最终得到的结果。
pytorch之 RNN 参数解释的更多相关文章
- pytorch之 RNN regression
		
关于RNN模型参数的解释,可以参看RNN参数解释 1 import torch from torch import nn import numpy as np import matplotlib.py ...
 - pytorch实现rnn并且对mnist进行分类
		
1.RNN简介 rnn,相比很多人都已经听腻,但是真正用代码操练起来,其中还是有很多细节值得琢磨. 虽然大家都在说,我还是要强调一次,rnn实际上是处理的是序列问题,与之形成对比的是cnn,cnn不能 ...
 - http load 的使用以及参数解释
		
http load 的使用以及参数解释 1.参数含义 参数 全称 含义 -p -parallel 并发的用户进程数.-f -fetches ...
 - /etc/sysctl.conf参数解释
		
/etc/sysctl.conf参数解释: fs.file max = 999999 #表示进程(例如一个worker进程)可能同时打开的最大句柄数,直接限制最大并发连接数 net.ipv4.tcp_ ...
 - lcd参数解释及刷新率计算,LCD时序
		
一.LCD显示图像的过程如下: 其中,VSYNC和HSYNC是有宽度的,加上后如下: 参数解释: HBP(Horizontal Back Porch)水平后沿:在每行或每列的象素数据开始输出时要插入的 ...
 - Yolov3参数解释以及答疑
		
目录 参数解析 训练答疑  参数解析 [net] #Testing #batch=1 //test:一次一个图片 #subdivisions=1 #Training batch=32 //一次迭代送 ...
 - angular-cli.json配置参数解释,以及依稀常用命令的通用关键参数解释
		
一. angular-cli.json常见配置 { "project": { "name": "ng-admin", //项目名称 &quo ...
 - mysql命令行各个参数解释
		
mysql命令行各个参数解释 http://blog.51yip.com/mysql/1056.html Usage: mysql [OPTIONS] [database] //命令方式 -?, ...
 - Wget用法、参数解释
		
wget功能的强大就不用多说了,在高手手里,它就像是个无往不利的杀人利器,下面是转载的一篇Wget用法.参数解释的比较好的一个文章,当然最好的老师还是man wget 是一个从网络上自动下载文件的自由 ...
 
随机推荐
- VueRouter爬坑第四篇-命名路由、编程式导航
			
VueRouter系列的文章示例编写时,项目是使用vue-cli脚手架搭建. 项目搭建的步骤和项目目录专门写了一篇文章:点击这里进行传送 后续VueRouter系列的文章的示例编写均基于该项目环境. ...
 - 微信小程序--百度地图坐标转换成腾讯地图坐标
			
最近开发小程序时出现一个问题,后台程序坐标采用的时百度地图的坐标,因为小程序地图时采用的腾讯地图的坐标系,两种坐标有一定的误差,导致位置信息显示不正确.现在需要一个可以转换两种坐标的方法,经过查询发现 ...
 - 你还不会Git?那就不要写代码了(二)
			
Git 命令练习 git的删除,添加,修改与日志 which vi 查看命令的目录 ⌃ a 光标去开头 ⌃ E 光标去结尾 ehco 'hellow world asd' > test.txt ...
 - 关于后缀间$LCP$的一些公式的证明
			
目录 关于\(LCP\)有如下两个公式: \(LCP~Lemma\) 的证明: \(LCP~Theorem\) 的证明: 关于\(LCP\)有如下两个公式: \(LCP~Lemma:\) 对任意 \( ...
 - IDEA需要修改的配置
			
自动编译开关 忽略大小写开关 智能导包开关 如下图所示,将 自动导入不明确的结构 智能优化包 这两个选项勾上.那么有什么效果呢? 你在代码中,只要敲list,就会出现提示,自动导入java.util. ...
 - n-tier waf 41  project  层真够多
			
ps: http://waf.codeplex.com/releases/view/618696
 - 添加动态输出   Adding Dynamic Output  精通ASP-NET-MVC-5-弗瑞曼 Listing 2-7
			
ViewBag Dynamic Output
 - JS-08-对象
			
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
 - 高阶函数及 map、reduce、filter 的实现
			
博客地址:https://ainyi.com/85 2020 开年国家经历了不少困难,最为凶猛的局势就是新型冠状病毒的蔓延,国务院最终决定春节假期延长至==2 月 2 号==:公司决定 3 - 7 号 ...
 - Shell常用命令之echo
			
echo 字符串的输出 选项 -n:不换行输出 -e:启用反斜杠转义符 -E:禁用反斜杠转义符 反斜杠转义符 \a:发出警告声 \b:删除前一个字符 \c:最后不加上换行符号 \f:换行但光标仍然停留 ...