我正在尝试使用 TensorFlow 后端将 Keras 1.x.x 代码转换为 2.2.x。
我在 Keras 1.x.x 中有以下内容,它接受以下输入:
org_image
3 个 RGB 颜色 channel 上的 256x256 图像shape=(256,256,3)
mask
1 个黑白颜色 channel 上的 256x256 maskshape=(256,256,1)
我希望将图像与 mask 结合起来,以获得 mask 区域缺失的新裁剪图像。为此,我首先使用 1 - mask
对 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])
的便利性,它等于 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])
如果您使用 tensorflow 作为后端,则 output_shape
是可选的。
其他有用的图层:
连接(轴=...)(list_of_inputs)
Add()(list_of_inputs)
Multiply()(list_of_inputs)
关于python - Keras 2.2.4 如何从 Keras 1.x.x 复制 merge(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54624043/