基于pytorch的lstm参数使用详解

  

<强> lstm(*输入,* * kwargs)

  

<强>将多层长短时记忆(LSTM)神经网络应用于输入序列。

  

<强>参数:

  

input_size:输入“x”中预期特性的数量

  

hidden_size:隐藏状态“h”中的特性数量

  

num_layers:循环层的数量,例如,设置“num_layers=2”“意味着将两个LSTM堆叠在一起,形成一个“堆叠的LSTM”,第二个LSTM接收第一个LSTM的输出并计算最终结果。默认值:1

  

偏见:如果“False”,则该层不使用偏置权重“b_ih”和“b_hh”。默认值:“真正的”

  

batch_first:如果' '真的' ',则输入和输出张量作为(seq,批处理特性)提供。默认值:“假”

  

辍学:如果非零,则在除最后一层外的每个LSTM层的输出上引入一个“辍学”层,相当于:attr:“辍学”。默认值:0

  

双向:如果‘真正的’,则成为双向LSTM。默认值:“假”

  

<强>输入:输入,(h_0 c_0)

  输入

* * * *的形状(seq_len、批处理input_size):包含输入序列特征的张量。输入也可以是一个压缩的可变长度序列。

  

看:func:“torch.nn.utils.rnn。pack_padded_sequence torch.nn.utils.rnn或:func:。pack_sequence”的细节。

  

* * h_0 * *的形状(num_layers * num_directions,批处理,hidden_size):张量包含批处理中每个元素的初始隐藏状态。

  

如果RNN是双向的,num_directions应该是2,否则应该是1 .

  

* * c_0 * *的形状(num_layers * num_directions,批处理,hidden_size):张量包含批处理中每个元素的初始单元格状态。

  

如果没有提供的(h_0 c_0)”,则* * h_0 * *和* * c_0 * *都默认为零。

  

<强>输出:输出,(h_n c_n)

  

* *输出* *的形状(seq_len、批处理num_directions * hidden_size):包含LSTM最后一层输出特征”(h_t)“张量,

  

对于每个t。如果一个类:torch.nn.utils.rnn。PackedSequence”已经给出,输出也将是一个打包序列。

  

对于未打包的情况,可以使用的输出。视图(seq_len、批num_directions hidden_size)”,正向和反向分别为方向“0”和“1”。

  

同样,在包装的情况下,方向可以分开。

  

* * h_n * *的形状(num_layers * num_directions,批处理,hidden_size):包含‘t=seq_len隐藏状态的张量。

  

输出与* *类似,层可以使用以下命令分隔

  

h_n。视图(num_layers num_directions,批hidden_size)对于“c_n”相似

  

* * c_n * * (num_layers * num_directions,批处理,hidden_size):张量包含“t=seq_len”的单元状态

  

所有的权重和偏差都初始化自:基于pytorch的lstm参数使用详解”>地点:<img src=

        包括::cudnn_persistent_rnn.rst            进口火炬   进口火炬。神经网络是神经网络      #双向rnn例子   # rnn=nn。RNN(10年,20年,2)   #输入=火炬。randn(5、3、10)   # h0=火炬。randn (2、3、20)   #输出,hn=rnn(输入、h0)   #打印(output.shape hn.shape)   #火炬。大小([20]5 3)火炬。大小([2、3、20])      #双向lstm例子   rnn=nn。LSTM(10年,20年,2)# (input_size、hidden_size num_layers)   输入=火炬。randn (5、3、10) # (seq_len、批处理input_size)   h0=火炬。randn (2、3、20) # (hidden_size num_layers * num_directions,批处理)   c0=火炬。randn (2、3、20) # (hidden_size num_layers * num_directions,批处理)   #输出:(seq_len、批num_directions * hidden_size)   # hn, cn (hidden_size num_layers * num_directions,批处理)   输出(hn, cn)=rnn(输入,(h0 c0))      打印(output.shape hn.shape cn.shape)   在祝辞祝辞火炬。大小([20]5 3)火炬。大小([2、3、20])火炬。大小([2、3、20])   之前      

以上这篇基于pytorch的lstm参数使用详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。

基于pytorch的lstm参数使用详解