EscVM / Efficient-CapsNet

Official TensorFlow code for the paper "Efficient-CapsNet: Capsule Network with Self-Attention Routing".
https://www.nature.com/articles/s41598-021-93977-0
Apache License 2.0
267 stars 59 forks source link

UnimplementedError: Fused conv implementation does not support grouped convolutions for now. #13

Closed dbl001 closed 3 years ago

dbl001 commented 3 years ago

I got the same error on OS X 12.1 as well as on Google CoLab Pro.

OS X tf.version '2.5.0'

CoLab tf.version 2.6.0

---------------------------------------------------------------------------
UnimplementedError                        Traceback (most recent call last)
<ipython-input-9-03c7f065910f> in <module>
----> 1 history = model_train.train(dataset, initial_epoch=0)

~/Efficient-CapsNet/models/model.py in train(self, dataset, initial_epoch)
    178         print('-'*30 + f'{self.model_name} train' + '-'*30)
    179 
--> 180         history = self.model.fit(dataset_train,
    181           epochs=self.config[f'epochs'], steps_per_epoch=steps,
    182           validation_data=(dataset_val), batch_size=self.config['batch_size'], initial_epoch=initial_epoch,

~/anaconda3/envs/ai/lib/python3.8/site-packages/tensorflow/python/keras/engine/training.py in fit(self, x, y, batch_size, epochs, verbose, callbacks, validation_split, validation_data, shuffle, class_weight, sample_weight, initial_epoch, steps_per_epoch, validation_steps, validation_batch_size, validation_freq, max_queue_size, workers, use_multiprocessing)
   1181                 _r=1):
   1182               callbacks.on_train_batch_begin(step)
-> 1183               tmp_logs = self.train_function(iterator)
   1184               if data_handler.should_sync:
   1185                 context.async_wait()

~/anaconda3/envs/ai/lib/python3.8/site-packages/tensorflow/python/eager/def_function.py in __call__(self, *args, **kwds)
    887 
    888       with OptionalXlaContext(self._jit_compile):
--> 889         result = self._call(*args, **kwds)
    890 
    891       new_tracing_count = self.experimental_get_tracing_count()

~/anaconda3/envs/ai/lib/python3.8/site-packages/tensorflow/python/eager/def_function.py in _call(self, *args, **kwds)
    948         # Lifting succeeded, so variables are initialized and we can run the
    949         # stateless function.
--> 950         return self._stateless_fn(*args, **kwds)
    951     else:
    952       _, _, _, filtered_flat_args = \

~/anaconda3/envs/ai/lib/python3.8/site-packages/tensorflow/python/eager/function.py in __call__(self, *args, **kwargs)
   3021       (graph_function,
   3022        filtered_flat_args) = self._maybe_define_function(args, kwargs)
-> 3023     return graph_function._call_flat(
   3024         filtered_flat_args, captured_inputs=graph_function.captured_inputs)  # pylint: disable=protected-access
   3025 

~/anaconda3/envs/ai/lib/python3.8/site-packages/tensorflow/python/eager/function.py in _call_flat(self, args, captured_inputs, cancellation_manager)
   1958         and executing_eagerly):
   1959       # No tape is watching; skip to running the function.
-> 1960       return self._build_call_outputs(self._inference_function.call(
   1961           ctx, args, cancellation_manager=cancellation_manager))
   1962     forward_backward = self._select_forward_and_backward_functions(

~/anaconda3/envs/ai/lib/python3.8/site-packages/tensorflow/python/eager/function.py in call(self, ctx, args, cancellation_manager)
    589       with _InterpolateFunctionError(self):
    590         if cancellation_manager is None:
--> 591           outputs = execute.execute(
    592               str(self.signature.name),
    593               num_outputs=self._num_outputs,

~/anaconda3/envs/ai/lib/python3.8/site-packages/tensorflow/python/eager/execute.py in quick_execute(op_name, num_outputs, inputs, attrs, ctx, name)
     57   try:
     58     ctx.ensure_initialized()
---> 59     tensors = pywrap_tfe.TFE_Py_Execute(ctx._handle, device_name, op_name,
     60                                         inputs, attrs, num_outputs)
     61   except core._NotOkStatusException as e:

UnimplementedError:  Fused conv implementation does not support grouped convolutions for now.
     [[node Efficinet_CapsNet_Generator/Efficient_CapsNet/primary_caps/conv2d/BiasAdd (defined at /Users/davidlaxer/Efficient-CapsNet/utils/layers.py:129) ]] [Op:__inference_train_function_3601]

Function call stack:
train_function

I also tried running on tensorflow-metal w/GPU ... machine unresponsive ... had to reboot.

EscVM commented 3 years ago

Already covered in previous issues ----> #1 #8

dbl001 commented 3 years ago

It's currently running on CoLab with the GPU. The code didn't recognize the CoLab TPU.