我想Keras 1.x.x代码转换为2.2.x的,与TensorFlow后端。
我有以下Keras 1.x.x这需要以下输入:
org_image
3 RGB颜色通道shape=(256,256,3)
的256×256的图像mask
的256×256的掩模上1 /黑白颜色通道shape=(256,256,1)
我想将图像与面罩相结合来获得,其中屏蔽区域缺少新的裁剪图像。要做到这一点,我第一次使用mask
,其中1 - mask
是那些张量取1
的倒数。然后我逐元素相乘org_image * (1 - mask)
获得新裁剪图像。代码看起来像下面Keras 1.x.x
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])
的convinence等于mode=lambda [org_img, mask]: org_img * (1 - mask)
。
我怎样才能复制在Keras 2.2.x中的1 - mask
?我需要在tf.backend.ones
进口?
或许我需要tf.enable_eager_execution()
?
我是很新,这让我认识了很多会在我的头上。我会很感激,如果有人可以澄清在我的误解是,谢谢!
使用Lambda
自定义函数或lambda表达式层:
input_img = Lambda(lambda x: x[0] * (1 - x[1]), output_shape=input_shape)([org_img, mask])
其中output_shape
是可选的,如果你正在使用tensorflow作为后端。
其他有用的层:
Concatenate(axis=...)(list_of_inputs)
Add()(list_of_inputs)
Multiply()(list_of_inputs)