如何在keras模型中使用tf操作

问题描述 投票:1回答:1

我正在尝试在keras模型中进行张量流操作,我对机制以及Lambda层对张量的影响感到很困惑。

这样可行:

a = keras.layers.Input(shape=[1, 2], dtype='float', name='a')
s= keras.layers.Lambda(lambda x: tf.transpose(tf.transpose(x)))(a)
model = keras.models.Model(inputs=a, outputs=s)

但这不起作用:

a = keras.layers.Input(shape=[1, 2], dtype='float', name='a')
s = tf.transpose(tf.transpose(a))
s = keras.layers.Lambda(lambda x: x)(s)
model = keras.models.Model(inputs=a, outputs=s)

它说:

AttributeError: 'Tensor' object has no attribute '_keras_history'

所以总是有必要在一个层内打包tf操作吗?

问题2(这就是我之前提到的原因):我们是否需要使用自定义图层来进行keras中的矩阵乘法?

谢谢。

python tensorflow keras matrix-multiplication attributeerror
1个回答
3
投票

问题1:是的,有必要用层包装tf操作,因为keras模型需要tensorflow操作中不包含的某些函数/变量。在这种情况下,_keras_history是一个属性,只能通过用图层包装op来生成。

问题2:矩阵乘法traHave你考虑使用keras Dense层,use_bias=False?如果你想为权重向量使用常量,你可以设置kernel_initializer={constant}trainable=False

© www.soinside.com 2019 - 2024. All rights reserved.