Skip to content

Issue retraining the classifier #2

@smeisler

Description

@smeisler

Hello,

I am trying to retrain the classifier. I have started by randomizing the weights by including the following lines in the load_weights function:

for key1 in weights_biases.keys():
        for key2 in weights_biases[key1].keys():
            weights_biases[key1][key2] = np.random.normal(loc=0.0, scale=1.0, size=np.size(weights_biases[key1][key2]))

I then try to compile and fit the network:

model = branched_network()
model.compile(optimizer='adam',
              loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True),
              metrics=['accuracy'])
model.fit(
    np.asarray(inputs), np.asarray(targets), epochs=1, verbose=1)

Inputs is a list of numpy arrays for cochleagrams, and targets is an array of integers corresponding to word outcomes.
I get the following error when running the fit.

Tensor("branched_network/Cast:0", shape=(None, 1, 65536), dtype=float64)
Tensor("branched_network/Cast_1:0", shape=(None, 1, 65536), dtype=float64)
Tensor("branched_network/Cast_2:0", shape=(None, 256, 256, 1), dtype=float64)


TypeError                                 Traceback (most recent call last)
<ipython-input-205-6366830757a9> in <module>
      1 tf.keras.backend.clear_session()
----> 2 model.call(inputs[0],'speech')

<ipython-input-203-b351b5e9b5da> in call(self, x, type)
     73     for layer in self.commun :
     74         print(tf.dtypes.cast(x, tf.float64))
---> 75         x = layer(tf.dtypes.cast(x, tf.float32))
     76     if type == "speech":
     77       for layer in self.speech: x = layer(tf.dtypes.cast(x, tf.float32))

~/opt/anaconda3/lib/python3.8/site-packages/tensorflow/python/keras/engine/base_layer.py in __call__(self, *args, **kwargs)
    983 
    984         with ops.enable_auto_cast_variables(self._compute_dtype_object):
--> 985           outputs = call_fn(inputs, *args, **kwargs)
    986 
    987         if self._activity_regularizer:

~/opt/anaconda3/lib/python3.8/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/anaconda3/lib/python3.8/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/anaconda3/lib/python3.8/site-packages/tensorflow/python/eager/def_function.py in _initialize(self, args, kwds, add_initializers_to)
    694     self._graph_deleter = FunctionDeleter(self._lifted_initializer_graph)
    695     self._concrete_stateful_fn = (
--> 696         self._stateful_fn._get_concrete_function_internal_garbage_collected(  # pylint: disable=protected-access
    697             *args, **kwds))
    698 

~/opt/anaconda3/lib/python3.8/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/anaconda3/lib/python3.8/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/anaconda3/lib/python3.8/site-packages/tensorflow/python/eager/function.py in _create_graph_function(self, args, kwargs, override_flat_arg_shapes)
   3063     arg_names = base_arg_names + missing_arg_names
   3064     graph_function = ConcreteFunction(
-> 3065         func_graph_module.func_graph_from_py_func(
   3066             self._name,
   3067             self._python_function,

~/opt/anaconda3/lib/python3.8/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/anaconda3/lib/python3.8/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/anaconda3/lib/python3.8/site-packages/tensorflow/python/eager/function.py in bound_method_wrapper(*args, **kwargs)
   3733     # However, the replacer is still responsible for attaching self properly.
   3734     # TODO(mdan): Is it possible to do it here instead?
-> 3735     return wrapped_fn(*args, **kwargs)
   3736   weak_bound_method_wrapper = weakref.ref(bound_method_wrapper)
   3737 

~/opt/anaconda3/lib/python3.8/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:

    <ipython-input-6-cee54ce53363>:15 call  *
        x = tf.nn.conv2d( previous_h, self.w,
    /Users/smeisler/opt/anaconda3/lib/python3.8/site-packages/tensorflow/python/util/dispatch.py:201 wrapper  **
        return target(*args, **kwargs)
    /Users/smeisler/opt/anaconda3/lib/python3.8/site-packages/tensorflow/python/ops/nn_ops.py:2158 conv2d_v2
        return conv2d(input,  # pylint: disable=redefined-builtin
    /Users/smeisler/opt/anaconda3/lib/python3.8/site-packages/tensorflow/python/util/dispatch.py:201 wrapper
        return target(*args, **kwargs)
    /Users/smeisler/opt/anaconda3/lib/python3.8/site-packages/tensorflow/python/ops/nn_ops.py:2264 conv2d
        return gen_nn_ops.conv2d(
    /Users/smeisler/opt/anaconda3/lib/python3.8/site-packages/tensorflow/python/ops/gen_nn_ops.py:975 conv2d
        _, _, _op, _outputs = _op_def_library._apply_op_helper(
    /Users/smeisler/opt/anaconda3/lib/python3.8/site-packages/tensorflow/python/framework/op_def_library.py:503 _apply_op_helper
        raise TypeError(

    TypeError: Input 'filter' of 'Conv2D' Op has type float64 that does not match type float32 of argument 'input'.

I have tried casting the tensor to different data types before passing them in to the next layer, but I continue receiving the same errors. Do you know how I may fix this?

Best,
Steven

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions