Python 如何在Keras中向我的模型输出中添加一个n维常数张量?

Python 如何在Keras中向我的模型输出中添加一个n维常数张量?,python,keras,keras-layer,Python,Keras,Keras Layer,我的模型将一批图像作为输入,并输出一批定制的图像。在预处理期间,从每个通道中减去VGG-16平均像素值。这是必要的,因为需要进一步处理。为了评估结果,我想在模型末尾添加一个自定义层,以获得可视化结果。因此,该层需要再次添加减去的值 到目前为止,我想使用一个Lambda层,它封装了一个函数。在这个函数中,我尝试叠加三个常量张量,以便将这个3D张量添加到输出中。我在这里面临的问题是,我不知道批量大小,也不知道图像大小,常数张量不接受任何形状条目。如何使此函数适用于任意输入。基本上我想说的是: mea

我的模型将一批图像作为输入,并输出一批定制的图像。在预处理期间,从每个通道中减去VGG-16平均像素值。这是必要的,因为需要进一步处理。为了评估结果,我想在模型末尾添加一个自定义层,以获得可视化结果。因此,该层需要再次添加减去的值

到目前为止,我想使用一个Lambda层,它封装了一个函数。在这个函数中,我尝试叠加三个常量张量,以便将这个3D张量添加到输出中。我在这里面临的问题是,我不知道批量大小,也不知道图像大小,常数张量不接受任何形状条目。如何使此函数适用于任意输入。基本上我想说的是:

mean=[103.939116.779123.68]
x[…,0]+=平均值[0]
x[…,1]+=平均值[1]
x[…,2]+=平均值[2]
代码:

model_inp=Input(shape=(无,无,通道),name='Input')
model_output=Conv2D(filters=64,kernel_size=(9,9),padding='same',activation='relu',kernel_initializer='RandomNormal')(model_inp)
model_output=Conv2D(filters=32,kernel_size=(1,1),padding='same',activation='relu',kernel_initializer='RandomNormal')(model_output)
model_output=Conv2D(filters=3,kernel_size=(5,5),padding='same',activation='linear',kernel_initializer='RandomNormal',name='output')(model_output)
模型输出\u fin=Lambda(self.vgg\u后处理)(模型输出)
def vgg_后处理(自,x):
平均值=[103.939116.779123.68]
B=K.常数(平均值[0],形状=(无,无,无,1))
G=K.常数(平均值[1],形状=(无,无,无,1))
R=K.常数(平均值[2],形状=(无,无,无,1))
十位数=K.堆栈([B,G,R],轴=3)
x+=十
返回x