首页 > 解决方案 > 向 Keras 层添加一个常量

问题描述

如何向图层添加常量?我原以为以下内容就足够了:

a = tf.keras.layers.Input(shape=(1,))
b = tf.constant(1)
c = tf.keras.layers.Add()([a, b])

但这给出了一个IndexError: tuple index out of range


编辑: 同样的错误发生在函数Subtract, Maximum, Minimum

标签: pythontensorflowkeras

解决方案


如果您正在使用 kerasInput层并tf.constant作为常规操作的一部分,那么您将按照@Marco 的说明进行操作。如果您想将它们用作模型构建过程的一部分,那么您不能使用tf.*诸如tf.constant等之类的操作tf.maximum

在模型构建中,您只需要使用图层即可。请在此处查看可用层。如果您想使用一些 tensorflow 操作(tf.constant、tf.maximum 等),那么您需要将它们包装在 keras LAMBDA 层中,如下所示。

a = tf.keras.layers.Input(shape=(1,))
b = tf.keras.layers.Lambda(lambda x:x+tf.constant(1.))(a) #
c = tf.keras.layers.Add()([a, b])

来自 TensorFlow 网站的另一个重要示例Add层。

input1 = tf.keras.layers.Input(shape=(16,))
x1 = tf.keras.layers.Dense(8, activation='relu')(input1)
input2 = tf.keras.layers.Input(shape=(32,))
x2 = tf.keras.layers.Dense(8, activation='relu')(input2)
# equivalent to `added = tf.keras.layers.add([x1, x2])`
added = tf.keras.layers.Add()([x1, x2])

推荐阅读