在keras中使用哪些合并层?

Mar*_*ler 3 python neural-network keras

Keras有合并的投入一样的许多不同的方式Add(),Subtract(),Multiply(),concatenate(),等...

它们都具有相同的效果,还是存在一个更好的情况?

nur*_*ric 7

这实际上取决于你想要实现的目标,但是简单地让我们看一下不同的合并层以及它们经常用于的内容:

  • add Addition是使用relu激活函数的网络的常见合并操作,因为sum也是正数并且可以编码OR运算.例如,您想要使用深层网络识别此答案的任何评论是否为正,那么您可以添加所有编码的表示.
  • 减法与平方减,因此(xy)^ 2用于等式关系,与另一个有多接近.这些弹出的注意力计算,图像中的这个区域是否包含我正在寻找的功能可能是一个减法.
  • multiply与减法相似,如果你有一个tanh的特征,那么你可以将它们相乘,以找到相似的特征.如果两者都是正数或负数,则乘法将为正负,否则网络将很好地使用此信息.
  • 平均值通常用于连接而不是丢失信息,但如果问题在数学上有意义,让每个先前的计算分支具有相同的权重,那么您的平均值.例如,您可能希望找到段落的整体情绪,并且不希望任何单个否定句子影响中性段落.
  • MaxPooling等池化操作中最大限度地弹出,并允许您在维度上实现某些不变性.在图像中,猫对猫的分类并不重要,同样地,如果您只是想检测它,那么异常发生在哪里并不重要.
  • concatenate是最常见的,因为它允许上游网络决定如何使用给定的信息.它用于收集信息以及其他合并层的输出.因此,您可以计算乘法并与其输入合并[x, y, x*y].默认情况下,它在Bidirectional中用于从两个方向获取信息.