原版Tensorflow教程包括以下代码:
batch_size = tf.size(labels)
labels = tf.expand_dims(labels, 1)
indices = tf.expand_dims(tf.range(0, batch_size, 1), 1)
concated = tf.concat(1, [indices, labels])
onehot_labels = tf.sparse_to_dense(concated, tf.pack([batch_size, NUM_CLASSES]), 1.0, 0.0)第二行向labels张量添加一个维数。但是,labels是通过提要字典输入的,因此它应该已经具有了[batch_size, NUM_CLASSES]形状。如果是的话,为什么在这里使用expand_dims?
发布于 2016-11-20 19:22:07
那本教程很老了。你指的是0.6版,而它们是0.11版(这篇文章的时间是11-20-2016年)。所以当时有很多不同的函数,版本0.6。
无论如何,回答你的问题:
mnist中的标签被编码为0-9。然而,损失函数期望标签被编码为一个热向量。
在那个例子中,标签已经不是[batch_size, NUM_CLASSES]了,它只是[batch_size]。
这可以通过类似的numpy函数来完成。此外,他们还提供了从tensorflow中的mnist数据集中获取标签的函数,作为一个热向量,这些向量已经具有您声明的形状。
https://stackoverflow.com/questions/40707011
复制相似问题