栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Keras连接层:不同类型连接功能之间的差异

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Keras连接层:不同类型连接功能之间的差异

首先,后端:

tf.keras.backend.concatenate()

后端功能应该在“内部”层中使用。您只能在

Lambda
图层,自定义图层,自定义损失函数,自定义指标等中使用此功能。

它直接作用于“张量”。

如果您不深入定制,这不是选择。(这在您的示例代码中是一个错误的选择-请参阅最后的详细信息)。

如果深入研究keras代码,您会注意到该

Concatenate
层在内部使用此功能:

import keras.backend as Kclass Concatenate(_Merge):      #blablabla       def _merge_function(self, inputs):        return K.concatenate(inputs, axis=self.axis)    #blablabla

然后,

Layer
keras.layers.Concatenate(axis=-1)

与其他任何keras图层一样,您 实例化* 并在 张量调用 它。 *

很简单:

#in a functional API model:inputTensor1 = Input(shape) #or some tensor coming out of any other layer   inputTensor2 = Input(shape2) #or some tensor coming out of any other layer#first parentheses are creating an instance of the layer#second parentheses are "calling" the layer on the input tensorsoutputTensor = keras.layers.Concatenate(axis=someAxis)([inputTensor1, inputTensor2])

除非上一层输出列表,否则这不适用于顺序模型(这是可能的,但并不常见)。


最后,来自layers模块的连接函数:

keras.layers.concatenate(inputs, axis=-1)

不是一层 。此函数将返回内部

Concatenate
层产生的张量。

代码很简单:

def concatenate(inputs, axis=-1, **kwargs):   #blablabla   return Concatenate(axis=axis, **kwargs)(inputs)

较旧的功能

在Keras 1中,人们具有要接收“图层”作为输入并返回输出“图层”的功能。他们的名字与这个

merge
词有关。

但是由于Keras 2没有提及或记录这些内容,因此我可能会避免使用它们,并且如果找到了旧代码,则可能会将其更新为正确的Keras 2代码。


为什么这个
_keras_shape
词?

不应在高级代码中使用此后端功能。编码人员应该使用了

Concatenate
一层。

atoms_bonds_features = Concatenate(axis=-1)([atoms, summed_bond_features])   #just this line is perfect

Keras图层将

_keras_shape
属性添加到其所有输出张量,而Keras使用此属性来推断整个模型的形状。

如果在图层或损耗/度量“外部”使用任何后端函数,则输出张量将缺少此属性,并且将显示错误消息

_keras_shape
,提示不存在。

当应该由适当的keras层添加属性时,编码器会通过手动添加属性来创建不良的解决方法。(这现在可能有效,但是如果更新了keras,则此代码将中断,而正确的代码将保持正常)



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/419914.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号