以下代码给出了TypeError: Value passed to parameter 'labels' has DataType float32 not in list of allowed values: int32, int64
。
import tensorflow as tf
#tf.enable_eager_execution()
vocab_size=100
embedding_dim=256
seq_len=10
model=tf.keras.Sequential()
model.add(tf.keras.layers.Embedding(vocab_size, embedding_dim, input_length=seq_len))
model.add(tf.keras.layers.Dense(vocab_size))
model.compile(optimizer = tf.train.GradientDescentOptimizer(1.0),loss = tf.losses.sparse_softmax_cross_entropy)#tf.keras.metrics.sparse_categorical_crossentropy
通过以下三个操作之一可以避免该错误:
tf.enable_eager_execution()
tf.losses.sparse_softmax_cross_entropy
更改为tf.keras.metrics.sparse_categorical_crossentropy
tf.keras.layers.Embedding
层任何深入了解Keras嵌入层与tf.loss之间相互作用的见解!我正在使用TensorFlow 1.12.0版。