首页 文章

使Keras模型输出一定形状的常数

提问于
浏览
0

我想要一个Keras模型,它总是输出所需输出形状的恒定值 .

def build_model(input_shape, output_shape)
    input = tf.keras.layers.Input(shape=(512,512,3))
    x = tf.keras.backend.constant(1, shape=output_shape)
    output = tf.keras.layers.Lambda(lambda x: x)(x)
    model = Model(inputs=input, outputs=output)
    return model

model = build_model((512,512,3), (512,512,32))

我收到以下错误:

输出张量到模型必须是TensorFlow Layer 的输出(因此保持过去的图层元数据) . 发现:Tensor("Const_3:0",shape =(512,512,32),dtype = float32)

我该如何解决?

更新

输入和输出确实没有连接 . 我想以尽可能低的GPU负载测试我的处理管道的性能 . 我认为总是在不进行任何计算的情况下输出相同的值将不会使用GPU . 但我仍然确保我的数据正确加载(输入层) .

1 回答

  • 1

    问题确实是需要连接输出和输入 . 我无法使用激活层,因为输出应该与输入的形状不同 . 因此,我最终将输入连接11次并再次切片以获得具有0个可训练参数的正确形状的输出 .

    最终的模型构建功能如下所示:

    def build_model(input_shape=(512,512,3)):
        input = tf.keras.layers.Input(shape=input_shape)
        lamb = tf.keras.layers.Lambda(lambda x: tf.slice(tf.concat([x]*11, axis=3), begin=(0,0,0,0), size=(-1,512,512,32)))
        output = lamb(inp)
        model = Model(inputs=input, outputs=output)
        return model
    

相关问题