【神经网络】学习笔记十二——RNN和LSTM的输入输出格式2.0

本篇写LSTM的输入输出。

一、输入格式

首先粘贴官方文档:

h和c的解释看下面,直接来看输入Input。

其格式为(seq_len,batch,input_size),输入为一个三维向量,第一维表示序列长度,即按时间序列展开有多少个可见的cell,等价于time_step;第二维表示数据批次的多少batch,即数据分为几批送进来;第三维input_size,表示每个time_step代表输入x的特征维数,即输入的特征向量的长度。

二、输出格式

官方文档:

(1)output形状为(seq_len,batch,num_direction*hidden_size),这个张量包含LSTM最后一层每个周期的输出特征(h_t),如果是双向LSTM,每个time_step的输出h=[h正向,h负向]。

output是一个三维张量,第一维表示序列长度,第二维表示数据批次的多少batch,即数据分为几批送进来,第三维hidden_size隐藏层大小,双向则二倍,单向则等价于隐藏层大小。

(2)h_n保存了每一层最后一个time_step的输出h,如果是双向LSTM,单独保存前向和后向的最后一个time_step的输出h;这里的h的大小应该是每一个隐藏层节点的值(或称状态),这就是h_n的含义

h_n是一个三维张量,(num_layers*num_directions,batch,hidden_size),第一维num_layers为层数,第三维为隐藏层节点的个数,即想要的节点值。说白了就是有几个长度为hidden_size的一维向量,每个表示一组隐藏节点的状态值。

(3)c_n与h_n一致,保存的是c值。维数也一样。

总结:

单层LSTM:

输入数据:

——input的格式:(seq_len,batch,input_size) #batch是批次数,可以在LSTM()中设置batch_first,使得X的输入格式要求变为(batch,seq_len,input_size)
——h0的格式:(1,batch,hidden_size)
——c0的格式:(1,batch,hidden_size

因为不管输入的数据X是多少个特征的,h0和c0的都只需要一个输入就行。

对于输出,输出的hidden_size的大小是由门控中的隐藏的神经元的个数来确定的。

输出的格式:

——output的格式:(seq_len,batch,hidden_size) #如果按照(seq_len,batch,hidden_size) 的格式输出,需要在LSTM()中设置return_sequences=True,否则默认只输出最后一个时间步的输出结果(1,batch,hidden_size).

——hn的格式:(1,batch,hidden_size)

——cn的格式:(1,batch,hidden_size)

多层LSTM:

如果是单向的,

输入数据:
——X的格式:(seq_len,batch,input_size)
——h0的格式:(num_layers,batch,hidden_size)
——c0的格式:(num_layers,batch,hidden_size)
输出数据:
——H的格式:(seq_len,batch,hidden_size)
——hn的格式:(num_layers,batch,hidden_size)
——cn的格式:(num_layers,batch,hidden_size)

如果是双向的,即在LSTM()函数中,添加关键字bidirectional=True,则:
单向则num_direction=1,双向则num_direction=2

输入数据格式:
——input(seq_len, batch, input_size)
——h0(num_layers * num_directions, batch, hidden_size)
——c0(num_layers * num_directions, batch, hidden_size)
输出数据格式:
——output(seq_len, batch, hidden_size * num_directions)
——hn(num_layers * num_directions, batch, hidden_size)
——cn(num_layers * num_directions, batch, hidden_size)

  • 3
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值