Python 高于阈值值的Tensorflow抓取预测和指数
基于高于某个阈值的预测值和指数,获取相应预测值和指数的最简单方法是什么 考虑一下这个问题:Python 高于阈值值的Tensorflow抓取预测和指数,python,tensorflow,Python,Tensorflow,基于高于某个阈值的预测值和指数,获取相应预测值和指数的最简单方法是什么 考虑一下这个问题: sess = tf.InteractiveSession() predictions = tf.constant([[ 0.32957435, 0.82079124, 0.54503286, 0.51966476, 0.63359714, 0.92034972, 0.13774526, 0.45154464, 0.18284607, 0.14604568],
sess = tf.InteractiveSession()
predictions = tf.constant([[ 0.32957435, 0.82079124, 0.54503286, 0.51966476, 0.63359714,
0.92034972, 0.13774526, 0.45154464, 0.18284607, 0.14604568],
[ 0.78612137, 0.98291659, 0.4841609 , 0.63260579, 0.21568334,
0.82978213, 0.05054879, 0.09517837, 0.28309393, 0.01788473],
[ 0.05706763, 0.24366784, 0.04608512, 0.32987678, 0.2342416 ,
0.91725373, 0.60084391, 0.51787591, 0.74161232, 0.30830121],
[ 0.67310858, 0.6250236 , 0.42477703, 0.37107778, 0.65123832,
0.97282803, 0.59533679, 0.49564457, 0.54935825, 0.63008392],
[ 0.70233917, 0.48129809, 0.59114349, 0.63535333, 0.71188867,
0.4799161 , 0.90896237, 0.86089945, 0.47896886, 0.83451629],
[ 0.82923532, 0.8950938 , 0.99231505, 0.05526769, 0.98151541,
0.18153167, 0.63851702, 0.07426929, 0.91846335, 0.81246626],
[ 0.12850153, 0.23018432, 0.29871917, 0.71228445, 0.13235569,
0.41061044, 0.98215759, 0.90024149, 0.53385031, 0.92247963],
[ 0.87011361, 0.44218826, 0.01772344, 0.87317121, 0.52231467,
0.86476815, 0.25352192, 0.31709731, 0.38249743, 0.74694788],
[ 0.15262914, 0.49544573, 0.49644637, 0.07461977, 0.13706958,
0.18619633, 0.86163998, 0.03700352, 0.51173556, 0.40018845]])
score_idx = tf.where(predictions > 0.8)
scores = tf.SparseTensor(score_idx, tf.gather_nd(predictions, score_idx), dense_shape=tf.shape(predictions, out_type=tf.int64))
dense_scores = tf.sparse_tensor_to_dense(scores)
print(sess.run([scores, dense_scores]))
我可以很容易地得到一个稀疏张量,它的所有预测值都在0.8以上,但最终我希望返回两个单独的1D张量:
- 预测指数=高于阈值的指数列表(示例中为0.8)
- 分数=对应示例的分数
[ 0.32957435, 0.82079124, 0.54503286, 0.51966476, 0.63359714,
0.92034972, 0.13774526, 0.45154464, 0.18284607, 0.14604568]
我期待着返回:
- 预测的_指数=[1,5]
- 得分=[0.821,0.920]
有没有我遗漏的简单解决方案?端到端问题实际上比原始的“索引”问题更简单,您只需执行
tf。其中
要根据您的maskI值选择预测元素或“默认值”,我不确定我是否完全理解它是如何简单的。我需要索引(因为我在推理时通过一个表传递索引以获得实际的标签名称)和预测元素(因为我希望能够对预测结果进行一些监视/评估)因此,如果我有预测,你会建议我如何获取高于阈值(比如0.5)的指数和值?为了澄清,默认值只会像前面的问题一样作为“填充”应用。因此,如果最长的行有3个元素>阈值,那么只有1个元素>阈值的行将需要添加2个填充元素(如前一个问题)我更新了问题以更好地涵盖端到端的目标。@YaroslavBulatov我仍在努力了解如何仅使用tf就可以实现这一点。其中--我能够使用默认值创建密集表示,但我想要的实际上是一个向量,它只包含满足条件的值。因此,对于第一行,我只想要[1,5]和[0.821,0.920]——如果tf.wehre有一个我忽略的非常简单的解决方案,我很想听到它!