TensorFlow,Keras-TypeError:传递给参数“ labels”的值的数据类型float32不在允许的值列表中:int32,int64

时间:2018-11-13 02:16:32

标签: python-3.x tensorflow keras

以下代码给出了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

通过以下三个操作之一可以避免该错误:

    导入张量流后
  1. 执行tf.enable_eager_execution()
  2. tf.losses.sparse_softmax_cross_entropy更改为tf.keras.metrics.sparse_categorical_crossentropy
  3. 删除tf.keras.layers.Embedding

任何深入了解Keras嵌入层与tf.loss之间相互作用的见解!我正在使用TensorFlow 1.12.0版。

0 个答案:

没有答案