查找有关标签Tensorflow Python的logit

时间:2019-05-14 05:10:10

标签: python tensorflow

我将标签数组和logits数组设置为:

label = [1,1,0,1,-1,-1,1,0,-1,0,-1,-1,0,0,0,1,1,1,-1,1]
logits = [0.2,0.3,0.4,0.1,-1.4,-2,0.4,0.5,-0.231,1.9,1.4,-1.456,0.12,-0.45,0.5,0.3,0.4,0.2,1.2,12]

使用Tensorflow,我想从label和logit那里获取值:

  

1>标签大于零
  2>标签小于零
  3>标签等于零

我愿意得到这样的结果:

label1,logits1 = some_Condition_logic_Where(label > 0) _ returns respective labels and logits

谁能建议我这是如何实现的?

已编辑

>>> label = [1,1,0,1,-1,-1,1,0,-1,0,-1,-1,0,0,0,1,1,1,-1,1]
>>> logits = [0.2,0.3,0.4,0.1,-1.4,-2,0.4,0.5,-0.231,1.9,1.4,-1.456,0.12,-0.45,0.5,0.3,0.4,0.2,1.2,12]
>>> label1 = [];logits1 = []
>>> for l1,l2 in zip(label,logits):
...     if(l1>0):
...         label1.append(l1)
...         logits1.append(l2)
...
>>> label1
[1, 1, 1, 1, 1, 1, 1, 1]
>>> logits1
[0.2, 0.3, 0.1, 0.4, 0.3, 0.4, 0.2, 12]

希望此逻辑在Tensorflow中与-1 and 0的值相同。我该如何实现?

1 个答案:

答案 0 :(得分:1)

您可以使用tf.boolean_mask

import tensorflow as tf

label = tf.constant([1,1,0,1,-1,-1,1,0,-1,0,-1,-1,0,0,0,1,1,1,-1,1],dtype=tf.float32)
logits = tf.constant([0.2,0.3,0.4,0.1,-1.4,-2,0.4,0.5,-0.231,1.9,1.4,-1.456,0.12,-0.45,0.5,0.3,0.4,0.2,1.2,12],dtype=tf.float32)

# label>0
label1 = tf.boolean_mask(label,tf.greater(label,0))
logits1 = tf.boolean_mask(logits,tf.greater(label,0))
# label<0
label2 = tf.boolean_mask(label,tf.less(label,0))
logits2 = tf.boolean_mask(logits,tf.less(label,0))
# label=0
label3 = tf.boolean_mask(label,tf.equal(label,0))
logits3 = tf.boolean_mask(logits,tf.equal(label,0))

with tf.Session() as sess:
    print(sess.run(label1))
    print(sess.run(logits1))
    print(sess.run(label2))
    print(sess.run(logits2))
    print(sess.run(label3))
    print(sess.run(logits3))

[1. 1. 1. 1. 1. 1. 1. 1.]
[ 0.2  0.3  0.1  0.4  0.3  0.4  0.2 12. ]
[-1. -1. -1. -1. -1. -1.]
[-1.4   -2.    -0.231  1.4   -1.456  1.2  ]
[0. 0. 0. 0. 0. 0.]
[ 0.4   0.5   1.9   0.12 -0.45  0.5 ]