【问题标题】:how to use tf operations in keras models如何在 keras 模型中使用 tf 操作
【发布时间】:2018-05-31 07:26:57
【问题描述】:

我正在尝试在 keras 模型中进行 tensorflow 操作,但我对机制以及 Lambda 层对 tf 张量的作用感到非常困惑。

所以这行得通:

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】:

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

    问题2:矩阵乘法是否考虑过使用kerasDense层,use_bias=False?如果你想为权重向量使用一个常数,你可以设置kernel_initializer={constant}trainable=False

    【讨论】:

      猜你喜欢
      • 2020-05-28
      • 2021-08-30
      • 1970-01-01
      • 2021-07-22
      • 2021-02-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-12
      相关资源
      最近更新 更多