efficientnet icon indicating copy to clipboard operation
efficientnet copied to clipboard

'Node' object has no attribute 'output_masks'

Open zubairahmed-ai opened this issue 5 years ago • 1 comments

Hi I am facing this issue for a while. I have posted a detailed issue on SO https://stackoverflow.com/questions/60913598/tensorflow-2-google-colab-efficientnet-training-attributeerror-node-obje

Here's the error output, can you please help

WARNING:tensorflow:From /usr/local/lib/python3.6/dist-packages/keras/backend/tensorflow_backend.py:4479: The name tf.truncated_normal is deprecated. Please use tf.random.truncated_normal instead.

---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-6-269fe6fc6f99> in <module>()
----> 1 baseModel = enet.EfficientNetB1(weights="imagenet", include_top=False, input_tensor=Input(shape=(224, 224, 3)), pooling='avg')
      2 
      3 # Adding 2 fully-connected layers to B0.
      4 x = baseModel.output
      5 x = BatchNormalization()(x)

4 frames
/usr/local/lib/python3.6/dist-packages/efficientnet/__init__.py in wrapper(*args, **kwargs)
     42         kwargs['models'] = keras.models
     43         kwargs['utils'] = keras.utils
---> 44         return func(*args, **kwargs)
     45 
     46     return wrapper

/usr/local/lib/python3.6/dist-packages/efficientnet/model.py in EfficientNetB1(include_top, weights, input_tensor, input_shape, pooling, classes, **kwargs)
    494         input_tensor=input_tensor, input_shape=input_shape,
    495         pooling=pooling, classes=classes,
--> 496         **kwargs
    497     )
    498 

/usr/local/lib/python3.6/dist-packages/efficientnet/model.py in EfficientNet(width_coefficient, depth_coefficient, default_resolution, dropout_rate, drop_connect_rate, depth_divisor, blocks_args, model_name, include_top, weights, input_tensor, input_shape, pooling, classes, **kwargs)
    348                       use_bias=False,
    349                       kernel_initializer=CONV_KERNEL_INITIALIZER,
--> 350                       name='stem_conv')(x)
    351     x = layers.BatchNormalization(axis=bn_axis, name='stem_bn')(x)
    352     x = layers.Activation(activation, name='stem_activation')(x)

/usr/local/lib/python3.6/dist-packages/keras/engine/base_layer.py in __call__(self, inputs, **kwargs)
    435 
    436             # Handle mask propagation.
--> 437             previous_mask = _collect_previous_mask(inputs)
    438             user_kwargs = kwargs.copy()
    439             if not is_all_none(previous_mask):

/usr/local/lib/python3.6/dist-packages/keras/engine/base_layer.py in _collect_previous_mask(input_tensors)
   1303             inbound_layer, node_index, tensor_index = x._keras_history
   1304             node = inbound_layer._inbound_nodes[node_index]
-> 1305             mask = node.output_masks[tensor_index]
   1306             masks.append(mask)
   1307         else:

AttributeError: 'Node' object has no attribute 'output_masks'

zubairahmed-ai avatar Mar 29 '20 15:03 zubairahmed-ai

I have the same issue, when I use the input_tensor(!)-Parameter:

import efficientnet.keras as efn 
base_model = efn.EfficientNetB0(
    include_top=False, weights=None, 
    input_tensor=Input(shape=(244, 244, 3)))

By the way, I'm using tensorflow 2.2.

Sorry, I didn't follow the link, you provided. The solution (copied over from stackoverflow) is to fix the import, like this:

import efficientnet.tfkeras as efn

stvogel avatar Jun 22 '20 08:06 stvogel