0

我的任务是按像素对图像进行分类......所以图像的每个像素都有一个类别,CNN 应该能够读出标签图像,使得每个像素都具有类别的离散值(0-19)。

我有一个 CNN,它似乎在再现相对值方面做得很好,因此它近似于标签图像,范围为 0.00001 和 0.00002……但是,我无法让交叉熵工作超出“有点好”,因为它依赖于具有离散值的图像标签矩阵:

[[0, 1, 1, 1],[1,1,3,3],.etc]  # A 2x4 pixel example

另外,我认为我不能依赖 onehot 向量,因为我会查看 19*227*227 矩阵……但如果这里没有解决方案,我可能会尝试这样做。


无论如何,如何对 softmax 中的返回值进行整数装箱?我必须为图像中的每个像素做 1hot 矢量,还是可以通过其他方式将 softmax 分布更改为整数类?

4

1 回答 1

2

我意识到这个答案有点晚了,但希望它会有所帮助。您不必创建 one-hot 向量;你可以使用tf.nn.sparse_softmax_cross_entropy_with_logits.

labels: Each entry labels[i] must be an index in [0, num_classes) or -1. If -1, the corresponding loss will be 0, regardless of the contents of logits[i].

有关其文档,请参阅下面的链接,以及在 CIFAR-10 网络教程中使用的示例。 https://www.tensorflow.org/versions/r0.8/api_docs/python/nn.html#sparse_softmax_cross_entropy_with_logits https://github.com/tensorflow/tensorflow/blob/master/tensorflow/models/image/cifar10/cifar10 .py

希望这可以帮助!

于 2016-07-06T18:33:29.407 回答