【问题标题】:Exact details of Embedding layer in KerasKeras 中嵌入层的详细信息
【发布时间】:2020-12-06 13:43:42
【问题描述】:

我想了解 Keras 中的嵌入层。任何人都可以帮忙吗?我找不到任何好的参考。

  1. 哪种算法有效?我的意思是基于哪篇论文或方法?我想要详细信息 自己实现。
  2. 如何创建嵌入的训练数据?它是 2 个单词 2 个单词或更多的邻居...
  3. 模型如何更新权重?是先嵌入然后模型,还是两者都更新 一起?
  4. 参数如何计算?例如我有这个简单的模型:
model = Sequential()

model.add(Embedding(input_dim=15, output_dim=8, input_length=4))

model.add(Flatten())

model.add(Dense(1, activation='sigmoid'))

model.summary()

and this is the summary:

Layer (type)                 Output Shape              Param 

=================================================================
embedding (Embedding)        (None, 4, 8)              120       
_________________________________________________________________
flatten (Flatten)            (None, 32)                0         
_________________________________________________________________
dense (Dense)                (None, 1)                 33  

120是怎么计算的? 提前致谢!

【问题讨论】:

  • 欢迎来到本站。您能否澄清您是否想要参考论文或解释上述代码?
  • 以120这个数字来说,就是指定的嵌入层需要存储的权重的个数。如果嵌入层的输入维度为 15(15 个可能的输入类别或词),输出维度为 8(每个类别由一个 8 维数组表示),则嵌入层存储的权重或参数的总数为15x8=120。
  • @user79161 请注意,在 SO 中要求参考显然是题外话

标签: python keras deep-learning embedding


【解决方案1】:

就参数数量(120)而言,即为指定的嵌入层需要存储的权重数量。如果嵌入层的输入维度为 15(15 个可能的输入类别或词),输出维度为 8(每个类别由一个 8 维数组表示),则嵌入层存储的权重或参数的总数为15x8=120。

嵌入权重本身可以在训练之前提供(使用预训练的权重:https://keras.io/examples/nlp/pretrained_word_embeddings/),也可以在模型训练过程中学习权重。在后一种情况下,学习方法与网络的其余部分相同,可能是某种形式的梯度下降,以尽量减少对所提供目标的损失。在初始化嵌入层时,您可以选择使用“trainable”关键字参数来训练或冻结权重。

【讨论】:

  • 谢谢,但我想知道“可能是某种形式的梯度下降,以尽量减少对提供的目标的损失”的确切含义。我需要详细信息才能自己从头开始实施。那么什么是算法,论文,...
  • 我认为大多数神经网络都是用梯度下降训练的。根据在真实目标和预测目标上评估的损失函数的导数更新网络的权重。我对深度学习库的理解是,它们将这个过程抽象出来,因此您不必自己管理梯度下降计算或更新所有权重所需的复杂反向传播步骤。
猜你喜欢
  • 1970-01-01
  • 2011-07-28
  • 1970-01-01
  • 2021-01-20
  • 1970-01-01
  • 2010-12-06
  • 2016-12-08
  • 1970-01-01
  • 2017-10-03
相关资源
最近更新 更多