Neural network nn.Linear()在pytorch';这是最后一次,为什么有必要?

Neural network nn.Linear()在pytorch';这是最后一次,为什么有必要?,neural-network,pytorch,lstm,recurrent-neural-network,Neural Network,Pytorch,Lstm,Recurrent Neural Network,我正在使用一些代码来训练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) 我已

我正在使用一些代码来训练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)

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

在这里,线性层正在将lstm产生的隐藏状态表示(
lstm\u output
)转换为大小为
vocab\u size
的向量。你的理解可能是错误的。该层应与LSTM一起进行培训


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

这里,线性层正在转换隐藏状态表示(
lstm\u输出
)由LSTM生成一个大小为
vocab_size
的向量。你的理解可能是错误的。该层应与LSTM一起进行培训


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

它是在模型训练后添加的?您能否提供上下文,即培训循环。如果模型已经训练过就很奇怪了,是在模型训练后添加的吗?您能否提供上下文,即培训循环。如果模型已经被训练过,这是非常奇怪的。考虑到缺乏架构
lstm\u输出
是logit输出,这是有道理的。必须在这些logit分数上应用softmax操作才能获得问题。词汇表上的分布。你能详细说明一下“逻辑输出”吗?我找不到任何我能理解的文档。在我的例子中,我用预先训练好的word2vec向量训练了一个lstm。我试图将该模型用作序列生成器,我希望我的输出是词汇表中的word2vec向量`起初,我认为我可以将nn.Linear的输出特征的维度设置为与w2v嵌入相同,但生成的序列最终太长,我认为这是由于完全连接的层。将Linear的输出特性设置为我的w2v向量的大小是一个好方法吗?这是有意义的,因为缺少架构
lstm\u输出
是logit输出。必须在这些logit分数上应用softmax操作才能获得问题。词汇表上的分布。你能详细说明一下“逻辑输出”吗?我找不到任何我能理解的文档。在我的例子中,我用预先训练好的word2vec向量训练了一个lstm。我试图将该模型用作序列生成器,我希望我的输出是词汇表中的word2vec向量`起初,我认为我可以将nn.Linear的输出特征的维度设置为与w2v嵌入相同,但生成的序列最终太长,我认为这是由于完全连接的层。将Linear的输出特性设置为w2v向量的大小是一个好方法吗?