【问题标题】:tf.nn.sparse_softmax_cross_entropy_with_logits - labels without one hot encoding in tensorflowtf.nn.sparse_softmax_cross_entropy_with_logits - 在张量流中没有一种热编码的标签
【发布时间】:2017-09-26 12:20:37
【问题描述】:

我正在尝试了解 tf.nn.sparse_softmax_cross_entropy_with_logits 的工作原理。

描述说:

    A common use case is to have logits of shape [batch_size, num_classes]
 and labels of shape [batch_size]. But higher dimensions are supported.

因此它建议我们可以提供原始形式的标签,例如[1,2,3]

现在,由于所有计算都是按批次完成的,我相信以下是可能的:

在所有情况下,我们假设批次大小等于 2。

案例1(一批): 登录:

0.4 0.2 0.4
0.3 0.3 0.4

对应标签:

2
3

我猜标签可能被编码为

[1 0 0]
[0 1 0] 

案例 2(与另一批): 登录:

0.4 0.2 0.4
0.3 0.3 0.4

对应标签:

1
2

我猜标签可能被编码为(我看不出是什么阻止我们进行这种编码,除非 tensorflow 跟踪它之前的编码方式)

[1 0 0]
[0 1 0] 

所以我们有两种不同的编码。假设 tensorflow 在批次之间保持编码一致是否安全?

【问题讨论】:

    标签: tensorflow softmax one-hot-encoding


    【解决方案1】:

    没有真正的编码发生。标签只是 1 在相应的 one-hot 向量中的位置:

    0 -> [1, 0, 0]
    1 -> [0, 1, 0]
    2 -> [0, 0, 1]
    

    每个批次都会用到这个“编码”。

    【讨论】:

    • 非常感谢!所以我的标签必须是某种格式?如果我的标签是 34、45、133,而我们只有三个类,该怎么办
    • @user1700890 是的,您的标签必须是介于 0 和 number_of_classes - 1 之间的整数。如果您的标签是 34、45 和 133,您必须自己将它们编码为 0、1 和 2。
    猜你喜欢
    • 2018-03-12
    • 2016-10-15
    • 2018-12-25
    • 2018-11-04
    • 2017-09-18
    • 2022-06-21
    • 2020-01-16
    相关资源
    最近更新 更多