Can anyone help me solving this error:
TypeError: Cannot convert value <tf.Tensor: shape=(), dtype=int32, numpy=8> to a TensorFlow DType.
While I am coding transformers from scratch, i got the msg so I share with you my code:
class Transformer (tf.keras.Model):
def __init__(self, vocab_size_encoder, vocab_size_decoder, d_model, n_layers,units, n_head, dropout_rate, name="Transformer"):
super(Transformer, self).__init__(name=name)
self.encoder = Encoder(n_layers, units, n_head, dropout_rate, vocab_size_encoder, d_model)
self.decoder = Encoder(n_layers, units, n_head, dropout_rate, vocab_size_decoder, d_model)
self.dense_layer = layers.Dense(vocab_size_decoder)
def create_padding_mask(self, sequence):
mask = tf.cast(tf.math.equal(sequence, 0), tf.float32)
return mask[:, tf.newaxis, tf.newaxis, :]
def create_look_ahead_mask(self, sequence):
sequence_length = tf.shape(sequence)[1]
mask = 1 - tf.linalg.band_part(tf.ones(sequence_length,sequence_length),-1,0)
return mask
def call(self, encoder_inputs, decoder_inputs, training):
encoder_mask = self.create_padding_mask(encoder_inputs)
decoder_mask1 = self.create_padding_mask(decoder_inputs)
decoder_mask2 = tf.maximum(
self.create_padding_mask(decoder_inputs),
self.create_look_ahead_mask(decoder_inputs))
encoder_outputs = self.encoder(encoder_inputs,
encoder_mask,
training)
decoder_outputs = self.decoder(decoder_inputs,encoder_outputs,decoder_mask2, decoder_mask1, training)
final_outputs = self.dense_layer(decoder_outputs)
return final_outputs
And this simple example is for testing the code:
encoder_inputs= tf.constant([[1,5,6,4,3,9,5,2,8],
[1,8,7,3,4,5,6,7,2]])
decoder_inputs= tf.constant([[1,4,7,3,5,7,2,8,1],
[1,8,2,3,5,6,3,4,2]])
transformer_test = Transformer(vocab_size_encoder=10,
vocab_size_decoder=10,
d_model=9,
n_layers=6,
units=50,
n_head=4,
dropout_rate=0.01)
y = transformer_test(encoder_inputs,
decoder_inputs[:,:-1])
This is just for the sake of testing. Otherwise, for more about the error:
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-15-98be24bcdd5c> in <module>()
1 y = transformer_test(encoder_inputs,
----> 2 decoder_inputs[:,:-1])
5 frames
/usr/local/lib/python3.7/dist-packages/tensorflow/python/framework/dtypes.py in as_dtype(type_value)
646
647 raise TypeError("Cannot convert value %r to a TensorFlow DType." %
--> 648 (type_value,))
TypeError: Cannot convert value <tf.Tensor: shape=(), dtype=int32, numpy=8> to a TensorFlow DType.
