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