zsh*_*tom 4 python merge keras
在测试了【babi_rnn.py】和【babi_memnn.py】的脚本后,【如何确定使用哪种Merge模式(add/average/multiply/dot/concat)?】的问题在我脑海中浮现了很多次。
例如,对于 LSTM 建模,使用 [concat] 合并假设两个分支的时间序列层输出似乎很容易理解。
但是,我不太容易理解为什么要使用[add] 来合并[babi_rnn.py] 中的两个分支。在 [babi_memnn.py] 中,招募了 [add]、[dot] 和 [concat] 合并模式。
那么,对于不同的使用场景,选择使用哪个合并功能有什么建议吗?
这些合并功能分为 3 类。
add,avg是线性组合。它用于简单地将几个不同的组件组合在一起,因为梯度可以很好地通过加法和减法流动。一个常见的用例是将多个标准相加 (+) 以获得联合训练多个任务的神经网络的损失函数。
另一个例子是L2 正则化:

L2 正则化旨在最小化权重的差异。所以权重越大,损失越大。
multiply是 的特例dot。在 Keras 中,您可以使用dot. 点积用于确定两个或多个向量彼此之间的相似程度。注意:dot产品实际上是一种收缩操作。它的幅度将小于或等于原始输入中的任何一个。在几何上证明为投影:
![]()
concat不丢弃任何输入。然后可以将连接的向量送入隐藏层以按元素重新缩放。你没有发现元素之间的相互作用。一种常见的做法是将堆叠 RNN 的隐藏状态和输出连接起来,并将其输入一个Dense层,让多个 RNN 执行类似于前馈网络的不同任务。

总而言之,每个 Merge 操作都有不同的用例。在 Luong Attention 论文中,提出了 3 种评分机制。根据您的型号,您可以挑选最适合您的型号。
| 归档时间: |
|
| 查看次数: |
2185 次 |
| 最近记录: |