用Keras进行元素明智的乘法

时间:2018-12-19 10:59:47

标签: keras computer-vision conv-neural-network mask

我有一个(256,256,3)形状的RGB图像,并且我有一个(256,256)形状的权重蒙版。如何使用Keras在它们之间进行逐元素乘法? (所有通道共享相同的掩码)

2 个答案:

答案 0 :(得分:6)

您需要一个Reshape,以便两个张量具有相同的维数,并需要一个Multiply

mask = Reshape((256,256,1))(mask) 
out = Multiply()([image,mask])

如果形状可变,则可以使用单个Lambda层,如下所示:

import keras.backend as K 

def multiply(x):
    image,mask = x
    mask = K.expand_dims(mask, axis=-1) #could be K.stack([mask]*3, axis=-1) too 
    return mask*image

out = Lambda(multiply)([image,mask])

答案 1 :(得分:3)

作为替代方案,您可以使用Lambda层来完成此操作(就像@DanielMöller的答案一样,您需要向蒙版添加第三个轴):

from keras import backend as K

out = Lambda(lambda x: x[0] * K.expand_dims(x[1], axis=-1))([image, mask])