nn.Linear() 在 pytorch 的最后做什么,为什么有必要?

Bor*_*ris 1 neural-network lstm recurrent-neural-network pytorch

我正在使用一些训练 lstm 生成序列的代码。训练模型后,调用 lstm() 方法:

x = some_input
lstm_output, (h_n, c_n) = lstm(x, hc) 
funcc = nn.Linear(in_features=lstm_num_hidden,
                  output_features=vocab_size,
                  bias=True)
func_output = func(lstm_output)
Run Code Online (Sandbox Code Playgroud)

我已经查看了文档,nn.Linear()但我仍然不明白这个转换正在做什么以及为什么它是必要的。如果 lstm 已经经过训练,那么它给出的输出应该已经具有预先建立的维度。该输出(lstm_output)将是生成的序列,或者在我的例子中是向量数组。我在这里错过了什么吗?

Was*_*mad 5

这里,线性层将lstm_outputLSTM 产生的隐藏状态表示 ( ) 转换为大小为 的向量vocab_size。你的理解或许是错误的。线性层应LSTM 一起训练。

我猜您正在尝试生成一系列标记(单词),因此线性层后面应该跟有Softmax操作来预测词汇表的概率分布。