从在另一个张量上执行的 argmax 在张量流中创建新向量

Creating new vector in tensorflow from argmax performed on another tensor

我有一个形状为 (?, 3) 的张量,看起来像这样 [x, y, z] 我需要创建一个函数来获取它的 argmax,创建新的向量并根据维度和 argmax 赋值。

示例:

   f(y):
    v = tf.variable(tf.zeros(y.get_shape()))
    index = tf.argmax(y)
    v[index] = 1.0
    return v

不幸的是,这行不通,我不知道该怎么做。

您确定要在此处创建并分配给 tf.Variable 吗?使用 tf.one_hot() op(从 0.8 版开始可用)在功能上构建结果可能会更简单,因为您不必担心初始化等。例如,您可以执行以下操作:

def f(y):
    index = tf.argmax(y, 1)
    return tf.one_hot(index, tf.shape(y)[1], 1.0, 0.0)