我正在使用 Tensorflow DNN 模型进行一些分类。
我有一个数字(float32)数据输入,但字符串类型输出。
x = tf.placeholder("float", [None, n_input])
y = tf.placeholder(tf.string, [None, n_classes])
当我尝试如下定义损失和优化器时:
cost = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(logits=pred, labels=y))
我遇到一个错误
TypeError: sigmoid_cross_entropy_with_logits() got an unexpected keyword argument 'labels'
我从here查找文档,它说的是
logits and targets must have the same type and shape.
我需要将类转换为 float (将字符串哈希为数字)吗?
output_y = [["apple", "apple", "orange", "banana"]]
encoded_y = [[1], [1], [2], [3]]
最佳答案
如果您使用的是tensorflow v 0.10,标签的关键字是targets。 如果您使用的是tensorflow v 1.0,那么标签的关键字是labels。 根据文档,您的标签向量应具有与 logits、float 32 或 float64 相同的类型。
关于python - Tensorflow 分类标签数据类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42560998/