我正在尝试寻找np.quantile()
的TensorFlow等价物。我找到了tfp.stats.quantiles()
(tfp
代表TensorFlow概率)。但是,它的构造与np.quantile()
的构造略有不同。
请看下面的例子:
import tensorflow_probability as tfp
import tensorflow as tf
import numpy as np
inputs = tf.random.normal((1, 4096, 4))
print("NumPy")
print(np.quantile(inputs.numpy(), q=0.9, axis=1, keepdims=False))
从TFP文档中我不确定如何使用tfp.stats.quantile()
编写上述代码。我尝试检查这两个方法的源代码,但没有帮助。
2条答案
按热度按时间mwkjh3gx1#
让我试着比在GitHub上更有帮助。
np.quantile
和tfp.stats.quantiles
在行为上有所不同。沿着指定轴计算数据的第q个分位数。
其中
q
是要计算的分位数或分位数序列,必须介于0和1之间(含0和1)。
和
tfp.stats.quantiles
给定样本向量
x
,此函数通过返回num_quantiles + 1
分界点来估计分界点所以你需要告诉
tfp.stats.quantiles
你想要多少个分位数,然后选择出q
的分位数。如果你不清楚如何从API中完成这件事,如果你看一下tfp.stats.quantiles
的源代码(对于v0.19.0
),我们可以看到它向我们展示了如何获得与NumPy类似的返回结构。为完整起见,请使用设置虚拟环境
让我们能够
axzmvihb2#
您还可以使用
tfp.stats.percentile(inputs, 90., axis=1, keepdims=False)
--与分位数的唯一区别是90.
替换了.90
。