Keras 有许多不同的方式来合并输入,例如Add()
, Subtract()
, Multiply()
, concatenate()
, etc...
它们是否都具有相同的效果,或者是否存在更适合其中一种的情况?
这实际上取决于您想要实现的目标,但让我们简单地看一下不同的合并层以及它们的常用用途:
-
add加法是使用 relu 激活函数的网络的常见合并操作,因为总和也将为正并且可以编码 OR 运算。例如,您想要使用深度网络来确定此答案的任何评论是否是肯定的,然后您可以添加所有编码表示。
-
subtract减法与平方相结合,所以 (x-y)^2 用于相等关系,如何close对另一个人来说是某事。这些在注意力计算中弹出,图像中的该区域是否包含我正在寻找的特征可能是减法。
-
multiply与减法类似,如果您有来自 tanh 的特征,那么您可以将它们逐个元素相乘以找到相似的特征。如果两者都是正数或负数,则乘法将为正负,否则网络会很好地使用此信息。
-
average通常会用连接来避免丢失信息,但如果问题在数学上有意义,使每个先前的计算分支具有相同的权重,那么您可以进行平均。例如,您可能想要找到段落的整体情绪,并且不希望任何单个否定句影响中性段落。
-
maximum在池操作中弹出,例如最大池化 https://keras.io/layers/pooling/并允许您在维度上实现一些不变性。在图像中,猫在哪里进行分类并不重要,同样,如果您只想检测异常,则异常发生在哪里并不重要。
-
连接是最常见的,因为它让上游网络决定如何使用给定的信息。它用于收集信息并且通常是其他合并层的输出。因此您可以计算乘法并与其输入合并
[x, y, x*y]
。默认情况下它用于双向 https://keras.io/layers/wrappers/#bidirectional让信息来自两个方向。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)