【发布时间】:2017-10-20 01:26:25
【问题描述】:
我将使用tensorflow 来实现它。
但问题是我不知道如何将分数转换为 one-hot(上图中的红色线)
假设我有一个 model 类,它将所有张量操作作为对象变量。
model.outputs 是一个张量运算(前馈)来获得scores,我需要将此outputs 张量转换为单热张量以不同的方式,以便我可以执行梯度操作。
我该如何实现?
【问题讨论】:
标签: tensorflow
我将使用tensorflow 来实现它。
但问题是我不知道如何将分数转换为 one-hot(上图中的红色线)
假设我有一个 model 类,它将所有张量操作作为对象变量。
model.outputs 是一个张量运算(前馈)来获得scores,我需要将此outputs 张量转换为单热张量以不同的方式,以便我可以执行梯度操作。
我该如何实现?
【问题讨论】:
标签: tensorflow
假设您的scores 或model.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]]
【讨论】: