Keras 2.2.4如何复制从Keras 1.x.x合并()

问题描述 投票:1回答:1

我想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()

我是很新,这让我认识了很多会在我的头上。我会很感激,如果有人可以澄清在我的误解是,谢谢!

python tensorflow merge keras deprecated
1个回答
0
投票

使用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)
© www.soinside.com 2019 - 2024. All rights reserved.