AttributeError: 'Node' 对象没有属性 'output_masks'

新手上路,请多包涵

我使用 Keras 预训练模型 VGG16。问题是,在将 tensorflow 配置为使用 GPU 后,我得到了一个错误,这是我以前在使用 CPU 时没有的。

错误是以下错误:

     Traceback (most recent call last):
  File "/home/guillaume/Documents/Allianz/ConstatOrNotConstatv3/train_network.py",      line 109, in <module>
    model = LeNet.build(width=100, height=100, depth=3, classes=5)
  File "/home/guillaume/Documents/Allianz/ConstatOrNotConstatv3/lenet.py", line 39,    in build
    output = model(pretrainedOutput)
  File "/usr/local/lib/python3.6/dist-packages/keras/engine/base_layer.py", line 443, in __call__
    previous_mask = _collect_previous_mask(inputs)
  File "/usr/local/lib/python3.6/dist-packages/keras/engine/base_layer.py", line 1311, in _collect_previous_mask
mask = node.output_masks[tensor_index]
  AttributeError: 'Node' object has no attribute 'output_masks'

执行此代码后我得到它:

     pretrained_model = VGG16(
        include_top=False,
        input_shape=(height, width, depth),
        weights='imagenet'
    )
    for layer in pretrained_model.layers:
        layer.trainable = False

    model = Sequential()
    # first (and only) set of FC => RELU layers
    model.add(Flatten())
    model.add(Dense(200, activation='relu'))
    model.add(Dropout(0.5))
    model.add(BatchNormalization())
    model.add(Dense(400, activation='relu'))
    model.add(Dropout(0.5))
    model.add(BatchNormalization())

    # softmax classifier
    model.add(Dense(classes,activation='softmax'))

    pretrainedInput = pretrained_model.input
    pretrainedOutput = pretrained_model.output
    output = model(pretrainedOutput)
    model = Model(pretrainedInput, output)

EDIT1:我有 keras (2.2.2) 和 tensorflow(1.10.0rc1)。我也试过 keras 2.2.0 和同样的错误。问题是我使用的 python 环境适用于其他非预训练 NN。

EDIT2:我可以连接两个自制模型。只有经过预训练的才会有问题,而不仅仅是 VGG16。

原文由 Saroten 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.6k
2 个回答

You’re likely importing tf.keras.layers or tf.keras.applications or other keras modules from tensorflow.keras , and mixing these objects with objects from the “pure” keras 不兼容的包,基于版本等。

我建议看看你是否可以从“纯” keras 模块导入并运行所有内容;调试时不要使用 tf.keras ,因为它们不一定兼容。我有同样的问题,这个解决方案对我有用。

原文由 NeurallyInspired 发布,翻译遵循 CC BY-SA 4.0 许可协议

当我同时导入 keras 和 tenerflow.keras 时,我遇到了同样的错误: from tensorflow.keras.optimizers import Adam from keras.utils import multi_gpu_model

我将代码更改为后解决了这个问题: from tensorflow.keras.optimizers import Adam from tensorflow.keras.utils import multi_gpu_model

原文由 ShusenTang 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题