【问题标题】:Tensorflow: Convert output tensor to one-hotTensorflow:将输出张量转换为 one-hot
【发布时间】:2017-10-20 01:26:25
【问题描述】:

我想做什么:(来自 cs231n 冬季课程)

我将使用tensorflow 来实现它。

但问题是我不知道如何将分数转换为 one-hot(上图中的红色线)

假设我有一个 model 类,它将所有张量操作作为对象变量。

model.outputs 是一个张量运算(前馈)来获得scores,我需要将此outputs 张量转换为单热张量以不同的方式,以便我可以执行梯度操作。

我该如何实现?

【问题讨论】:

    标签: tensorflow


    【解决方案1】:

    假设您的scoresmodel.outputs 节点的形状为[batch, #class]。在下面的示例中,我们使用batch_size = 2,我们有 4 个classes

    tf.reset_default_graph()
    batch_size=2
    num_classes=4
    score = tf.constant([[0.5, 0.6, 0.2, 0.01], 
                         [0.8, 0.75, 1.0, 1.0]])
    
    max_per_instance = tf.expand_dims(tf.reduce_max(score, axis=1), 0)
    tiled = tf.tile(max_per_instance, [num_classes, 1])
    n_hot = tf.cast(tf.equal(score, tf.transpose(tiled)), tf.int32)
    with tf.Session() as sess:
      print sess.run(n_hot)
    
    >> [[0 1 0 0]
        [0 0 1 1]]
    

    【讨论】:

    • tf.argmax 如何是一个可微的算子?
    猜你喜欢
    • 2020-06-30
    • 2017-06-07
    • 2017-09-22
    • 2022-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-14
    • 1970-01-01
    相关资源
    最近更新 更多