马克·泰勒
Keras有合并的投入一样的许多不同的方式Add()
,Subtract()
,Multiply()
,concatenate()
,等...
它们是否都具有相同的效果,或者在某些情况下更可取?
纽里克
这实际上取决于您要实现的目标,但简要地让我们看一下不同的合并层以及它们通常用于什么目的:
- add加法是使用relu激活功能的网络的常见合并操作,因为总和也将为正,并且可以对OR运算进行编码。例如,您想使用深度网络来确定该答案的任何评论是否是肯定的,然后可以添加所有编码的表示形式。
- 减法与平方相减,因此(xy)^ 2用于相等关系,彼此之间有多接近。这些会在注意力计算中弹出,图像中的该区域是否包含我要寻找的特征,可能会相减。
- 乘类似减法,如果你有特点从正切说,那么你可以将它们相乘元素方式找到类似的功能。如果两者均为正或负,则乘法将为正负;否则,网络将很好地使用此信息。
- 通常将平均数换成不丢失信息的连接,但如果从数学上讲,使每个先前的计算分支具有相等的权重是有意义的,那么您可以进行平均。例如,您可能希望找到一个段落的整体感觉,而不希望任何否定句影响中性段落。
- MaxPooling之类的合并操作中会弹出最大的弹出窗口,并允许您在尺寸上实现一定的不变性。在图像中,对猫进行分类并不重要,同样,如果您只想检测出异常,则在哪里发生异常也无关紧要。
- 串联是最常见的,因为它可以让上游网络决定如何使用给定的信息。它用于收集信息,通常用于其他合并层的输出。因此,您可以计算乘法并与其输入合并
[x, y, x*y]
。默认情况下,它在双向中用于使双向信息流通。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
编辑于
我来说两句