Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python LSTM num_单位大小,即隐藏层的大小_Python_Keras_Lstm - Fatal编程技术网

Python LSTM num_单位大小,即隐藏层的大小

Python LSTM num_单位大小,即隐藏层的大小,python,keras,lstm,Python,Keras,Lstm,我经常看到natural language processing任务使用LSTM的方式是首先使用嵌入层,然后使用嵌入大小的LSTM层,即如果一个单词由一个1x300向量表示,则使用LSTM(300) 例如: 这样做有什么特别的原因吗?喜欢更好地表达意思吗?我不认为有任何特殊的原因/需要,坦率地说,我自己也没有见过很多这样的情况(即使用LSTM隐藏单元==嵌入大小)。唯一的效果是每个嵌入向量元素有一个单独的存储单元(我认为这不是一个要求或必要) 话虽如此,我想我可以多提一点。也就是说,在这个设置中

我经常看到
natural language processing
任务使用
LSTM
的方式是首先使用
嵌入层
,然后使用嵌入大小的
LSTM层
,即如果一个单词由一个1x300向量表示,则使用
LSTM(300)

例如:


这样做有什么特别的原因吗?喜欢更好地表达意思吗?

我不认为有任何特殊的原因/需要,坦率地说,我自己也没有见过很多这样的情况(即使用
LSTM
隐藏单元==
嵌入
大小)。唯一的效果是每个嵌入向量元素有一个单独的存储单元(我认为这不是一个要求或必要)

话虽如此,我想我可以多提一点。也就是说,在这个设置中有一个
嵌入
层是有原因的。事实上,这是一个很好的理由。让我们考虑这两个选项,

  • 使用一个热编码进行单词表示
  • 使用
    嵌入
    进行单词表示
  • 方案2比方案1有几个优点

    • 使用嵌入层时,输入的维度要小得多(例如,300而不是50000)
    • 您为模型提供了灵活性,以学习实际上适合您解决的任务的单词表示法。换句话说,您没有限制单词的表示在训练过程中保持不变
    • 如果使用预训练的单词嵌入层初始化
      嵌入层
      更好。您正在将单词语义引入到您正在解决的任务中。这总是有助于更好地解决任务。这类似于让一个不理解单词含义的幼儿做一些与文本相关的事情(例如,按照正确的语法顺序排列单词),而不是让一个3岁的孩子做同样的任务。他们俩最终可能都会这么做。但是一个人会做得更快更好

    有趣的问题。。。。从技术上讲,我们可以选择任何数字,但如果平等可以带来更好的学习,那么研究就可以了。。。。
    model = Sequential()
    model.add(Embedding(vocabulary, hidden_size, input_length=num_steps))
    model.add(LSTM(hidden_size, return_sequences=True))