我有一个自动编码器模型,如下所示:
input_img = Input(shape=(128, 128, 1))
x = Conv2D(...)(input_img)
x = MaxPooling2D(...)(x)
...
out = Conv2D(1, (3, 3), activation='sigmoid')(x)
my_model = Model(input_img, decoded)
my_model.compile(optimizer='adadelta', loss=my_custom_loss)
目前,out
的形状与input_img
相同,假设为(None, 128, 128, 1)
。我想操纵out
来塑造(None, 128, 128, 2)
。额外块的内容无关紧要。
如果有人想知道我为什么要这样做:这是因为我打算在基础事实值y_true
中有一些额外的信息,以便我可以定义一个特定的成本函数my_custom_loss
。为了做到这一点,似乎out
的形状在定义成本函数时必须与y_true
的形状匹配...
答案 0 :(得分:1)
如果内容真的无关紧要,可以用零填充。它可能看起来像:
zeros = Lambda(lambda x: K.zeros_like(x))(out) # (None, 128, 128, 1)
out = Concatenate([out, zeros]) # (None, 128, 128, 2)
确保忽略要添加的额外填充。