Поэлементное умножение с Keras - PullRequest
0 голосов
/ 19 декабря 2018

У меня есть RGB-изображение формы (256,256,3), и у меня есть маска веса формы (256,256).Как мне выполнить поэлементное умножение между ними с помощью Keras?(все каналы имеют одинаковую маску)

Ответы [ 2 ]

0 голосов
/ 19 декабря 2018

В качестве альтернативы вы можете сделать это, используя слой Lambda (как в ответе @ DanielMöller, вам нужно добавить третью ось к маске):

from keras import backend as K

out = Lambda(lambda x: x[0] * K.expand_dims(x[1], axis=-1))([image, mask])
0 голосов
/ 19 декабря 2018

Вам нужен 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])
...