DLS Course 4: Convolutional Neural Networks, Week 2, error in assignment 2 - Transfer_learning_with_MobileNet_v1

Hi, I am getting an error in a cell which I have not edited. I couldn’t figure out the but by going thru the error message. Can someone help, please. (pls point me to previous discussion if its exits).

Pasting the code since it is from a non-graded function. Below is the cell which I am getting error on.


fine_tune_epochs = 5
total_epochs = initial_epochs + fine_tune_epochs

history_fine = model2.fit(train_dataset,
epochs=total_epochs,
initial_epoch=history.epoch[-1],
validation_data=validation_dataset)


Below is the error log


Epoch 5/10

TypeError Traceback (most recent call last)
in
5 epochs=total_epochs,
6 initial_epoch=history.epoch[-1],
----> 7 validation_data=validation_dataset)

/opt/conda/lib/python3.7/site-packages/tensorflow/python/keras/engine/training.py in _method_wrapper(self, *args, **kwargs)
106 def _method_wrapper(self, *args, **kwargs):
107 if not self._in_multi_worker_mode(): # pylint: disable=protected-access
→ 108 return method(self, *args, **kwargs)
109
110 # Running inside run_distribute_coordinator already.

/opt/conda/lib/python3.7/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)
1096 batch_size=batch_size):
1097 callbacks.on_train_batch_begin(step)
→ 1098 tmp_logs = train_function(iterator)
1099 if data_handler.should_sync:
1100 context.async_wait()

/opt/conda/lib/python3.7/site-packages/tensorflow/python/eager/def_function.py in call(self, *args, **kwds)
778 else:
779 compiler = “nonXla”
→ 780 result = self._call(*args, **kwds)
781
782 new_tracing_count = self._get_tracing_count()

/opt/conda/lib/python3.7/site-packages/tensorflow/python/eager/def_function.py in _call(self, *args, **kwds)
821 # This is the first call of call, so we have to initialize.
822 initializers =
→ 823 self._initialize(args, kwds, add_initializers_to=initializers)
824 finally:
825 # At this point we know that the initialization is complete (or less

/opt/conda/lib/python3.7/site-packages/tensorflow/python/eager/def_function.py in _initialize(self, args, kwds, add_initializers_to)
695 self._concrete_stateful_fn = (
696 self._stateful_fn._get_concrete_function_internal_garbage_collected( # pylint: disable=protected-access
→ 697 *args, **kwds))
698
699 def invalid_creator_scope(*unused_args, **unused_kwds):

/opt/conda/lib/python3.7/site-packages/tensorflow/python/eager/function.py in _get_concrete_function_internal_garbage_collected(self, *args, **kwargs)
2853 args, kwargs = None, None
2854 with self._lock:
→ 2855 graph_function, _, _ = self._maybe_define_function(args, kwargs)
2856 return graph_function
2857

/opt/conda/lib/python3.7/site-packages/tensorflow/python/eager/function.py in _maybe_define_function(self, args, kwargs)
3211
3212 self._function_cache.missed.add(call_context_key)
→ 3213 graph_function = self._create_graph_function(args, kwargs)
3214 self._function_cache.primary[cache_key] = graph_function
3215 return graph_function, args, kwargs

/opt/conda/lib/python3.7/site-packages/tensorflow/python/eager/function.py in _create_graph_function(self, args, kwargs, override_flat_arg_shapes)
3073 arg_names=arg_names,
3074 override_flat_arg_shapes=override_flat_arg_shapes,
→ 3075 capture_by_value=self._capture_by_value),
3076 self._function_attributes,
3077 function_spec=self.function_spec,

/opt/conda/lib/python3.7/site-packages/tensorflow/python/framework/func_graph.py in func_graph_from_py_func(name, python_func, args, kwargs, signature, func_graph, autograph, autograph_options, add_control_dependencies, arg_names, op_return_value, collections, capture_by_value, override_flat_arg_shapes)
984 _, original_func = tf_decorator.unwrap(python_func)
985
→ 986 func_outputs = python_func(*func_args, **func_kwargs)
987
988 # invariant: func_outputs contains only Tensors, CompositeTensors,

/opt/conda/lib/python3.7/site-packages/tensorflow/python/eager/def_function.py in wrapped_fn(*args, **kwds)
598 # wrapped allows AutoGraph to swap in a converted function. We give
599 # the function a weak reference to itself to avoid a reference cycle.
→ 600 return weak_wrapped_fn().wrapped(*args, **kwds)
601 weak_wrapped_fn = weakref.ref(wrapped_fn)
602

/opt/conda/lib/python3.7/site-packages/tensorflow/python/framework/func_graph.py in wrapper(*args, **kwargs)
971 except Exception as e: # pylint:disable=broad-except
972 if hasattr(e, “ag_error_metadata”):
→ 973 raise e.ag_error_metadata.to_exception(e)
974 else:
975 raise

TypeError: in user code:

/opt/conda/lib/python3.7/site-packages/tensorflow/python/keras/engine/training.py:806 train_function  *
    return step_function(self, iterator)
/opt/conda/lib/python3.7/site-packages/tensorflow/python/keras/engine/training.py:796 step_function  **
    outputs = model.distribute_strategy.run(run_step, args=(data,))
/opt/conda/lib/python3.7/site-packages/tensorflow/python/distribute/distribute_lib.py:1211 run
    return self._extended.call_for_each_replica(fn, args=args, kwargs=kwargs)
/opt/conda/lib/python3.7/site-packages/tensorflow/python/distribute/distribute_lib.py:2585 call_for_each_replica
    return self._call_for_each_replica(fn, args, kwargs)
/opt/conda/lib/python3.7/site-packages/tensorflow/python/distribute/distribute_lib.py:2945 _call_for_each_replica
    return fn(*args, **kwargs)
/opt/conda/lib/python3.7/site-packages/tensorflow/python/keras/engine/training.py:789 run_step  **
    outputs = model.train_step(data)
/opt/conda/lib/python3.7/site-packages/tensorflow/python/keras/engine/training.py:747 train_step
    y_pred = self(x, training=True)
/opt/conda/lib/python3.7/site-packages/tensorflow/python/keras/engine/base_layer.py:985 __call__
    outputs = call_fn(inputs, *args, **kwargs)
/opt/conda/lib/python3.7/site-packages/tensorflow/python/keras/engine/functional.py:386 call
    inputs, training=training, mask=mask)
/opt/conda/lib/python3.7/site-packages/tensorflow/python/keras/engine/functional.py:508 _run_internal_graph
    outputs = node.layer(*args, **kwargs)
/opt/conda/lib/python3.7/site-packages/tensorflow/python/keras/engine/base_layer.py:985 __call__
    outputs = call_fn(inputs, *args, **kwargs)
/opt/conda/lib/python3.7/site-packages/tensorflow/python/keras/engine/functional.py:386 call
    inputs, training=training, mask=mask)
/opt/conda/lib/python3.7/site-packages/tensorflow/python/keras/engine/functional.py:508 _run_internal_graph
    outputs = node.layer(*args, **kwargs)
/opt/conda/lib/python3.7/site-packages/tensorflow/python/keras/engine/base_layer.py:985 __call__
    outputs = call_fn(inputs, *args, **kwargs)
/opt/conda/lib/python3.7/site-packages/tensorflow/python/keras/layers/normalization.py:720 call
    outputs = self._fused_batch_norm(inputs, training=training)
/opt/conda/lib/python3.7/site-packages/tensorflow/python/keras/layers/normalization.py:577 _fused_batch_norm
    _fused_batch_norm_inference)
/opt/conda/lib/python3.7/site-packages/tensorflow/python/keras/utils/tf_utils.py:65 smart_cond
    pred, true_fn=true_fn, false_fn=false_fn, name=name)
/opt/conda/lib/python3.7/site-packages/tensorflow/python/framework/smart_cond.py:51 smart_cond
    pred_value = smart_constant_value(pred)
/opt/conda/lib/python3.7/site-packages/tensorflow/python/framework/smart_cond.py:88 smart_constant_value
    "Found instead: %s" % type(pred))

TypeError: `pred` must be a Tensor, or a Python bool, or 1 or 0. Found instead: <class 'str'>

I tried to print the validation_dataset and I can see it as a tensor and not a string. Not sure if I accidentally edited something which I am not supposed to.

validation_dataset
<BatchDataset shapes: ((None, 160, 160, 3), (None,)), types: (tf.float32, tf.int32)>


1 Like

This means there is an error in your code, and the “cell you didn’t edit” is probably running a test of your code. When it fails, an error is displayed.

Are you running the assignments in Coursera Labs, or are you using some other platform?

As Tom says, maybe you didn’t write that cell, but it’s calling the model that you defined earlier and feeding it the training data and validation data that were defined by earlier cells that you may have modified.

Are you sure there are no funny looking errors earlier if you do “Cell → Run All”?

If that doesn’t turn up anything, then we’ll probably have to look at your notebook. But we need to do that by DM, not here in a public thread. I’ll send a DM thread about how to do that.

Tom, I am running the notebook in coursera labs.

Paul, Yes, I checked for the errors in every cell and couldn’t figure out the error. I have shared the code to you and Tom in a separate DM link. Thank you for your support.

To close the loop on the public thread, this one was hard to debug and definitely required looking at the source code. We had a private conversation about that and it turned out that the problem was that when we need to set the “trainable” flags at various points in the code, those values need to be python Booleans and not strings. So it’s important to realize that in python "False" is not the same thing as False. The former is a python string datatype and it doesn’t end well if a Boolean was expected. :nerd_face:

Here’s a quick demo:

friesWithThat = "True"
print(type(friesWithThat))
<class 'str'>
superSizeIt = False
print(type(superSizeIt))
<class 'bool'>