apple / tensorflow_macos

TensorFlow for macOS 11.0+ accelerated using Apple's ML Compute framework.
Other
3.66k stars 308 forks source link

LSTM error #229

Closed shreyasdangare closed 3 years ago

shreyasdangare commented 3 years ago
model = tf.keras.Sequential([
    tf.keras.layers.Embedding(vocab_size+1, embedding_dim, input_length=max_length, weights=[embeddings_matrix], trainable=False),
    tf.keras.layers.Dropout(0.2),
    tf.keras.layers.Conv1D(64, 5, activation='relu'),
    tf.keras.layers.MaxPooling1D(pool_size=4),
    tf.keras.layers.LSTM(64),
    tf.keras.layers.Dense(1, activation='sigmoid')
])
model.compile(loss='binary_crossentropy',optimizer='adam',metrics=['accuracy'])
model.summary()

num_epochs = 50

history = model.fit(training_padded, training_labels, epochs=num_epochs, validation_data=(testing_padded, testing_labels), verbose=2)

Error NotImplementedError Traceback (most recent call last)

in ----> 1 model = tf.keras.Sequential([ 2 tf.keras.layers.Embedding(vocab_size+1, embedding_dim, input_length=max_length, weights=[embeddings_matrix], trainable=False), 3 tf.keras.layers.Dropout(0.2), 4 tf.keras.layers.Conv1D(64, 5, activation='relu'), 5 tf.keras.layers.MaxPooling1D(pool_size=4), ~/miniforge3/envs/tf64/lib/python3.8/site-packages/tensorflow/python/training/tracking/base.py in _method_wrapper(self, *args, **kwargs) 515 self._self_setattr_tracking = False # pylint: disable=protected-access 516 try: --> 517 result = method(self, *args, **kwargs) 518 finally: 519 self._self_setattr_tracking = previous_value # pylint: disable=protected-access ~/miniforge3/envs/tf64/lib/python3.8/site-packages/tensorflow/python/keras/engine/sequential.py in __init__(self, layers, name) 142 layers = [layers] 143 for layer in layers: --> 144 self.add(layer) 145 146 @property ~/miniforge3/envs/tf64/lib/python3.8/site-packages/tensorflow/python/training/tracking/base.py in _method_wrapper(self, *args, **kwargs) 515 self._self_setattr_tracking = False # pylint: disable=protected-access 516 try: --> 517 result = method(self, *args, **kwargs) 518 finally: 519 self._self_setattr_tracking = previous_value # pylint: disable=protected-access ~/miniforge3/envs/tf64/lib/python3.8/site-packages/tensorflow/python/keras/engine/sequential.py in add(self, layer) 221 # If the model is being built continuously on top of an input layer: 222 # refresh its output. --> 223 output_tensor = layer(self.outputs[0]) 224 if len(nest.flatten(output_tensor)) != 1: 225 raise ValueError(SINGLE_LAYER_OUTPUT_ERROR_MSG) ~/miniforge3/envs/tf64/lib/python3.8/site-packages/tensorflow/python/keras/layers/recurrent.py in __call__(self, inputs, initial_state, constants, **kwargs) 658 659 if initial_state is None and constants is None: --> 660 return super(RNN, self).__call__(inputs, **kwargs) 661 662 # If any of `initial_state` or `constants` are specified and are Keras ~/miniforge3/envs/tf64/lib/python3.8/site-packages/tensorflow/python/keras/engine/base_layer.py in __call__(self, *args, **kwargs) 944 # >> model = tf.keras.Model(inputs, outputs) 945 if _in_functional_construction_mode(self, inputs, args, kwargs, input_list): --> 946 return self._functional_construction_call(inputs, args, kwargs, 947 input_list) 948 ~/miniforge3/envs/tf64/lib/python3.8/site-packages/tensorflow/python/keras/engine/base_layer.py in _functional_construction_call(self, inputs, args, kwargs, input_list) 1083 layer=self, inputs=inputs, build_graph=True, training=training_value): 1084 # Check input assumptions set after layer building, e.g. input shape. -> 1085 outputs = self._keras_tensor_symbolic_call( 1086 inputs, input_masks, args, kwargs) 1087 ~/miniforge3/envs/tf64/lib/python3.8/site-packages/tensorflow/python/keras/engine/base_layer.py in _keras_tensor_symbolic_call(self, inputs, input_masks, args, kwargs) 815 return nest.map_structure(keras_tensor.KerasTensor, output_signature) 816 else: --> 817 return self._infer_output_signature(inputs, args, kwargs, input_masks) 818 819 def _infer_output_signature(self, inputs, args, kwargs, input_masks): ~/miniforge3/envs/tf64/lib/python3.8/site-packages/tensorflow/python/keras/engine/base_layer.py in _infer_output_signature(self, inputs, args, kwargs, input_masks) 856 # TODO(kaftan): do we maybe_build here, or have we already done it? 857 self._maybe_build(inputs) --> 858 outputs = call_fn(inputs, *args, **kwargs) 859 860 self._handle_activity_regularization(inputs, outputs) ~/miniforge3/envs/tf64/lib/python3.8/site-packages/tensorflow/python/keras/layers/recurrent_v2.py in call(self, inputs, mask, training, initial_state) 1161 # LSTM does not support constants. Ignore it during process. 1162 orig_initial_state = initial_state -> 1163 inputs, initial_state, _ = self._process_inputs(inputs, initial_state, None) 1164 1165 if isinstance(mask, list): ~/miniforge3/envs/tf64/lib/python3.8/site-packages/tensorflow/python/keras/layers/recurrent.py in _process_inputs(self, inputs, initial_state, constants) 857 initial_state = self.states 858 elif initial_state is None: --> 859 initial_state = self.get_initial_state(inputs) 860 861 if len(initial_state) != len(self.states): ~/miniforge3/envs/tf64/lib/python3.8/site-packages/tensorflow/python/keras/layers/recurrent.py in get_initial_state(self, inputs) 640 dtype = inputs.dtype 641 if get_initial_state_fn: --> 642 init_state = get_initial_state_fn( 643 inputs=None, batch_size=batch_size, dtype=dtype) 644 else: ~/miniforge3/envs/tf64/lib/python3.8/site-packages/tensorflow/python/keras/layers/recurrent.py in get_initial_state(self, inputs, batch_size, dtype) 2504 2505 def get_initial_state(self, inputs=None, batch_size=None, dtype=None): -> 2506 return list(_generate_zero_filled_state_for_cell( 2507 self, inputs, batch_size, dtype)) 2508 ~/miniforge3/envs/tf64/lib/python3.8/site-packages/tensorflow/python/keras/layers/recurrent.py in _generate_zero_filled_state_for_cell(cell, inputs, batch_size, dtype) 2985 batch_size = array_ops.shape(inputs)[0] 2986 dtype = inputs.dtype -> 2987 return _generate_zero_filled_state(batch_size, cell.state_size, dtype) 2988 2989 ~/miniforge3/envs/tf64/lib/python3.8/site-packages/tensorflow/python/keras/layers/recurrent.py in _generate_zero_filled_state(batch_size_tensor, state_size, dtype) 3001 3002 if nest.is_nested(state_size): -> 3003 return nest.map_structure(create_zeros, state_size) 3004 else: 3005 return create_zeros(state_size) ~/miniforge3/envs/tf64/lib/python3.8/site-packages/tensorflow/python/util/nest.py in map_structure(func, *structure, **kwargs) 657 658 return pack_sequence_as( --> 659 structure[0], [func(*x) for x in entries], 660 expand_composites=expand_composites) 661 ~/miniforge3/envs/tf64/lib/python3.8/site-packages/tensorflow/python/util/nest.py in (.0) 657 658 return pack_sequence_as( --> 659 structure[0], [func(*x) for x in entries], 660 expand_composites=expand_composites) 661 ~/miniforge3/envs/tf64/lib/python3.8/site-packages/tensorflow/python/keras/layers/recurrent.py in create_zeros(unnested_state_size) 2998 flat_dims = tensor_shape.TensorShape(unnested_state_size).as_list() 2999 init_state_size = [batch_size_tensor] + flat_dims -> 3000 return array_ops.zeros(init_state_size, dtype=dtype) 3001 3002 if nest.is_nested(state_size): ~/miniforge3/envs/tf64/lib/python3.8/site-packages/tensorflow/python/util/dispatch.py in wrapper(*args, **kwargs) 199 """Call target, and fall back on dispatchers if there is a TypeError.""" 200 try: --> 201 return target(*args, **kwargs) 202 except (TypeError, ValueError): 203 # Note: convert_to_eager_tensor currently raises a ValueError, not a ~/miniforge3/envs/tf64/lib/python3.8/site-packages/tensorflow/python/ops/array_ops.py in wrapped(*args, **kwargs) 2817 2818 def wrapped(*args, **kwargs): -> 2819 tensor = fun(*args, **kwargs) 2820 tensor._is_zeros_tensor = True 2821 return tensor ~/miniforge3/envs/tf64/lib/python3.8/site-packages/tensorflow/python/ops/array_ops.py in zeros(shape, dtype, name) 2866 # Create a constant if it won't be very big. Otherwise create a fill 2867 # op to prevent serialized GraphDefs from becoming too large. -> 2868 output = _constant_if_small(zero, shape, dtype, name) 2869 if output is not None: 2870 return output ~/miniforge3/envs/tf64/lib/python3.8/site-packages/tensorflow/python/ops/array_ops.py in _constant_if_small(value, shape, dtype, name) 2802 def _constant_if_small(value, shape, dtype, name): 2803 try: -> 2804 if np.prod(shape) < 1000: 2805 return constant(value, shape=shape, dtype=dtype, name=name) 2806 except TypeError: <__array_function__ internals> in prod(*args, **kwargs) ~/miniforge3/envs/tf64/lib/python3.8/site-packages/numpy/core/fromnumeric.py in prod(a, axis, dtype, out, keepdims, initial, where) 3028 10 3029 """ -> 3030 return _wrapreduction(a, np.multiply, 'prod', axis, dtype, out, 3031 keepdims=keepdims, initial=initial, where=where) 3032 ~/miniforge3/envs/tf64/lib/python3.8/site-packages/numpy/core/fromnumeric.py in _wrapreduction(obj, ufunc, method, axis, dtype, out, **kwargs) 85 return reduction(axis=axis, out=out, **passkwargs) 86 ---> 87 return ufunc.reduce(obj, axis, dtype, out, **passkwargs) 88 89 ~/miniforge3/envs/tf64/lib/python3.8/site-packages/tensorflow/python/framework/ops.py in __array__(self) 850 851 def __array__(self): --> 852 raise NotImplementedError( 853 "Cannot convert a symbolic Tensor ({}) to a numpy array." 854 " This error may indicate that you're trying to pass a Tensor to" NotImplementedError: Cannot convert a symbolic Tensor (lstm/strided_slice:0) to a numpy array. This error may indicate that you're trying to pass a Tensor to a NumPy call, which is not supported **Code:** [https://colab.research.google.com/github/lmoroney/dlaicourse/blob/master/TensorFlow%20In%20Practice/Course%203%20-%20NLP/NLP%20Course%20-%20Week%203%20Exercise%20Answer.ipynb](url)
c-juhwan commented 3 years ago

Hi, I've experienced this error yesterday and I saw this: https://stackoverflow.com/questions/58479556/notimplementederror-cannot-convert-a-symbolic-tensor-2nd-target0-to-a-numpy

They suggested to downgrade numpy version to 1.19.5, But I couldn't install it via pip. So I used conda to downgrade numpy version.

conda install numpy=1.19.5

After the downgrade, the error has gone.

Hope this help!

shreyasdangare commented 3 years ago

Thanks for the solution. Closing this issue.