web-dev-qa-db-de.com

Elementweise Multiplikation mit Keras

Ich habe ein RGB-Bild der Form (256,256,3) und ich habe eine Gewichtsmaske der Form (256,256). Wie führe ich die elementweise Multiplikation zwischen ihnen mit Keras durch? (Alle Kanäle haben die gleiche Maske)

6
Mark.F

Sie benötigen eine Reshape, damit beide Tensoren die gleiche Anzahl von Dimensionen haben, und eine Multiply Ebene

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

Wenn Sie variable Formen haben, können Sie eine einzelne Lambda Ebene wie folgt verwenden:

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])
9
Daniel Möller

Alternativ können Sie dazu eine Lambda Ebene verwenden (wie in der Antwort von @ DanielMöller müssen Sie der Maske eine dritte Achse hinzufügen):

from keras import backend as K

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