Я пытаюсь преобразовать код Keras 1.xx в 2.2.x, с бэкэндом TensorFlow.
У меня есть ниже в Keras 1.xx, который принимает следующие входные данные:
org_image
Изображение 256x256 на 3 цветовых каналах RGB shape=(256,256,3)
mask
Маска 256x256 на 1 ч / б цветном канале shape=(256,256,1)
IВы хотите объединить изображение с маской, чтобы получить новое обрезанное изображение, в котором отсутствует область маски.Для этого я сначала возьму mask
, используя 1 - mask
, где 1
- тензор единиц.Затем я поэлементно умножаю org_image * (1 - mask)
, чтобы получить недавно обрезанное изображение.Код выглядит следующим образом в Keras 1.xx
from keras.layers import Input, merge
input_shape = (256,256,3)
org_img = Input(shape=input_shape)
mask = Input(shape=(input_shape[0], input_shape[1], 1))
input_img = merge([org_img, mask],
mode=lambda x: x[0] * (1 - x[1]),
output_shape=input_shape)
В Keras 2.2.x было введено критическое изменение, которое заменило функцию merge()
на Add()
, Subtract()
, Multiply()
...и т.п.Предыдущий merge()
имел убедительность mode=lambda x: x[0] * (1 - x[1])
, равную mode=lambda [org_img, mask]: org_img * (1 - mask)
.
Как я могу повторить 1 - mask
в Keras 2.2.x?Нужно ли импортировать в tf.backend.ones
?
Или, может быть, мне нужно tf.enable_eager_execution()
?
Я довольно новичок в этом, поэтому я знаю, что многое происходит у меня над головойЯ был бы очень признателен, если бы кто-то мог уточнить, где мое заблуждение, спасибо!