''only supports NHWC tensor format' in Conv3D on M1 Mac

I am trying to run tensorflow on M1 Mac(installed via miniforge) and while fitting the model I am getting error for Invalid argument.

Below is the code which I am trying to run:

Code: To fit data using below.

model_1.fit(train_generator, steps_per_epoch=steps_per_epoch, epochs=20, verbose=1, callbacks=callbacks_list, validation_data=val_generator, validation_steps=validation_steps, class_weight=None, workers=1, initial_epoch=0)

The input format I am using is as below:

model_1 = Sequential()       
model_1.add(Conv3D(8,kernel_size=(3,3,3),padding='same',input_shape=(30, 120, 120, 3)))
model_1.add(BatchNormalization())
model_1.add(Activation('relu'))

The error is as below:

File ~/miniforge3/envs/tensorflow/lib/python3.9/site-packages/tensorflow/python/keras/engine/training_generator_v1.py:202, in model_iteration(model, data, steps_per_epoch, epochs, verbose, callbacks, validation_data, validation_steps, validation_freq, class_weight, max_queue_size, workers, use_multiprocessing, shuffle, initial_epoch, mode, batch_size, steps_name, **kwargs)
    199   break
    201 # Setup work for each epoch.
--> 202 model.reset_metrics()
    203 epoch_logs = {}
    204 if mode == ModeKeys.TRAIN:

File ~/miniforge3/envs/tensorflow/lib/python3.9/site-packages/tensorflow/python/keras/engine/training_v1.py:1003, in Model.reset_metrics(self)
   1001 metrics = self._get_training_eval_metrics()
   1002 for m in metrics:
-> 1003   m.reset_state()
   1005 # Reset metrics on all the distributed (cloned) models.
   1006 if self._distribution_strategy:

File ~/miniforge3/envs/tensorflow/lib/python3.9/site-packages/tensorflow/python/keras/metrics.py:260, in Metric.reset_state(self)
    258   return self.reset_states()
    259 else:
--> 260   backend.batch_set_value([(v, 0) for v in self.variables])

File ~/miniforge3/envs/tensorflow/lib/python3.9/site-packages/tensorflow/python/util/dispatch.py:206, in add_dispatch_support.<locals>.wrapper(*args, **kwargs)
    204 """Call target, and fall back on dispatchers if there is a TypeError."""
    205 try:
--> 206   return target(*args, **kwargs)
    207 except (TypeError, ValueError):
    208   # Note: convert_to_eager_tensor currently raises a ValueError, not a
    209   # TypeError, when given unexpected types.  So we need to catch both.
    210   result = dispatch(wrapper, args, kwargs)

File ~/miniforge3/envs/tensorflow/lib/python3.9/site-packages/tensorflow/python/keras/backend.py:3829, in batch_set_value(tuples)
   3827   assign_ops.append(assign_op)
   3828   feed_dict[assign_placeholder] = value
-> 3829 get_session().run(assign_ops, feed_dict=feed_dict)

File ~/miniforge3/envs/tensorflow/lib/python3.9/site-packages/tensorflow/python/keras/backend.py:745, in get_session(op_input_list)
    743 if not _MANUAL_VAR_INIT:
    744   with session.graph.as_default():
--> 745     _initialize_variables(session)
    746 return session

File ~/miniforge3/envs/tensorflow/lib/python3.9/site-packages/tensorflow/python/keras/backend.py:1193, in _initialize_variables(session)
   1189     candidate_vars.append(v)
   1190 if candidate_vars:
   1191   # This step is expensive, so we only run it on variables not already
   1192   # marked as initialized.
-> 1193   is_initialized = session.run(
   1194       [variables_module.is_variable_initialized(v) for v in candidate_vars])
   1195   # TODO(kathywu): Some metric variables loaded from SavedModel are never
   1196   # actually used, and do not have an initializer.
   1197   should_be_initialized = [
   1198       (not is_initialized[n]) and v.initializer is not None
   1199       for n, v in enumerate(candidate_vars)]

File ~/miniforge3/envs/tensorflow/lib/python3.9/site-packages/tensorflow/python/client/session.py:967, in BaseSession.run(self, fetches, feed_dict, options, run_metadata)
    964 run_metadata_ptr = tf_session.TF_NewBuffer() if run_metadata else None
    966 try:
--> 967   result = self._run(None, fetches, feed_dict, options_ptr,
    968                      run_metadata_ptr)
    969   if run_metadata:
    970     proto_data = tf_session.TF_GetBuffer(run_metadata_ptr)

File ~/miniforge3/envs/tensorflow/lib/python3.9/site-packages/tensorflow/python/client/session.py:1190, in BaseSession._run(self, handle, fetches, feed_dict, options, run_metadata)
   1187 # We only want to really perform the run if fetches or targets are provided,
   1188 # or if the call is a partial run that specifies feeds.
   1189 if final_fetches or final_targets or (handle and feed_dict_tensor):
-> 1190   results = self._do_run(handle, final_targets, final_fetches,
   1191                          feed_dict_tensor, options, run_metadata)
   1192 else:
   1193   results = []

File ~/miniforge3/envs/tensorflow/lib/python3.9/site-packages/tensorflow/python/client/session.py:1368, in BaseSession._do_run(self, handle, target_list, fetch_list, feed_dict, options, run_metadata)
   1365   return self._call_tf_sessionprun(handle, feed_dict, fetch_list)
   1367 if handle is None:
-> 1368   return self._do_call(_run_fn, feeds, fetches, targets, options,
   1369                        run_metadata)
   1370 else:
   1371   return self._do_call(_prun_fn, handle, feeds, fetches)

File ~/miniforge3/envs/tensorflow/lib/python3.9/site-packages/tensorflow/python/client/session.py:1394, in BaseSession._do_call(self, fn, *args)
   1389 if 'only supports NHWC tensor format' in message:
   1390   message += ('\nA possible workaround: Try disabling Grappler optimizer'
   1391               '\nby modifying the config for creating the session eg.'
   1392               '\nsession_config.graph_options.rewrite_options.'
   1393               'disable_meta_optimizer = True')
-> 1394 raise type(e)(node_def, op, message)

InvalidArgumentError: Node 'training/Adam/gradients/gradients/dropout_1/cond_grad/StatelessIf': Connecting to invalid output 1 of source node dropout_1/cond which has 1 outputs. Try using tf.compat.v1.experimental.output_all_intermediates(True).


Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source