python - Keras 合并层错误

标签 python neural-network theano keras

我正在尝试构建一个模型来对图像进行着色。我正在使用 LAB 色彩空间。模型的输入是 L channel ,模型将被训练来预测 A 和 B channel 。我想通过几个卷积运行 L channel ,然后将其分成另外两个模型,分别计算 A 和 B channel 。最后我想将它们合并在一起以获得输出。

model = Sequential()
model.add(InputLayer((1, H, W)))

model.add(Convolution2D(64, 5, 5, border_mode = 'same', activation = 'relu'))
model.add(Convolution2D(64, 5, 5, border_mode = 'same', activation = 'relu'))
last = Convolution2D(64, 5, 5, border_mode = 'same', activation = 'relu')
model.add(last)

a_model = Sequential()
a_model.add(last)
a_model.add(Convolution2D(64, 5, 5, border_mode = 'same', activation = 'relu'))
a_model.add(Convolution2D(64, 5, 5, border_mode = 'same', activation = 'relu'))
a_model.add(Convolution2D(1, 3, 3, border_mode = 'same', activation = 'sigmoid'))

b_model = Sequential()
b_model.add(last)
b_model.add(Convolution2D(64, 5, 5, border_mode = 'same', activation = 'relu'))
b_model.add(Convolution2D(64, 5, 5, border_mode = 'same', activation = 'relu'))
b_model.add(Convolution2D(1, 3, 3, border_mode = 'same', activation = 'sigmoid'))

model.add(Merge((a_model, b_model), mode = 'concat'))

当我尝试创建合并图层时出现以下错误。

Using Theano backend.
Using gpu device 0: GeForce GTX TITAN (CNMeM is disabled, cuDNN 5004)
Traceback (most recent call last):
  File "/home/chase/workspace/Colorizer/colorizer2.py", line 79, in <module>
    model.add(Merge((a_model, b_model), mode = 'concat'))
  File "/usr/local/lib/python3.5/dist-packages/keras/engine/topology.py", line 1118, in __init__
    self.add_inbound_node(layers, node_indices, tensor_indices)
  File "/usr/local/lib/python3.5/dist-packages/keras/engine/topology.py", line 524, in add_inbound_node
    assert len(node_indices) == len(inbound_layers)
AssertionError

我希望模型的输出为 (2, H, W),其中 H 和 W 是图像的高度和宽度。

最佳答案

顺序模型不允许您在网络中创建 fork 。请改用函数式 API(Keras 1.0 中的新功能)。您可以关注this tutorial .

关于python - Keras 合并层错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37503270/

相关文章:

python - Luigi中如何只允许特定机器运行任务

python - Django 当我使用基于类的 View 时,如何在表单中传递 request.user(当前登录用户)?

python - 如何阻止 python 正则表达式过于贪婪

python - np.dot 和 np.multiply 与 np.sum 在二进制交叉熵损失计算中的区别

python - 神经网络 - 损失不收敛

python - Keras,为什么向模型添加层这么慢?

python - 为什么floatX的标志会影响Theano中是否使用GPU?

python - 您如何在 Geraldo Reports 中生成/创建表格?

machine-learning - 如何处理不代表数量的数字

python - theano( python ): elementwise gradient