使用 Keras 进行逐元素乘法

Element-wise multiplication with Keras

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

您需要一个 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])

作为替代方案,您可以使用 Lambda 层来执行此操作(如@DanielMöller 的回答中,您需要向蒙版添加第三个轴):

from keras import backend as K

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