【问题标题】:Finding p% of smallest tensor values - TensorFlow 2.0找到最小张量值的 p% - TensorFlow 2.0
【发布时间】:2020-02-20 08:00:10
【问题描述】:

我正在使用 Python 3.7 和 TensorFlow 2.0,但遇到以下问题。在任意维度的给定张量内,如果我想找到 p% 的最小权重(其中 p 可以是用户输入),我该怎么做?

例子:

x = tf.random.normal(shape=(3, 2, 2))                                   

x.numpy()                                                               
Out[8]: 
array([[[-0.30938825,  0.40093166],
        [ 1.5417175 , -0.9551434 ]],

       [[-0.7977963 , -2.0784302 ],
        [-1.5039488 , -0.75159657]],

       [[ 1.7954558 ,  0.19909047],
        [-0.2359499 , -2.4791834 ]]], dtype=float32)

在张量“x”(形状:(3, 2, 2))内,我怎样才能找到 p = 30% 的最小权重?然后我计划将 p% 的最小权重设置为零。

谢谢!

【问题讨论】:

    标签: python tensorflow tensorflow-probability


    【解决方案1】:

    使用TensorFlow Probabilitystats.percentile

    In [5]: import tensorflow_probability as tfp
    
    In [6]: p30 = tfp.stats.percentile(x, q=30.)
    
    In [7]: p30
    Out[7]: <tf.Tensor: id=1159, shape=(), dtype=float32, numpy=-0.9551434>
    
    In [8]: tf.where(x <= p30, 0, x)
    Out[8]:
    <tf.Tensor: id=1108, shape=(3, 2, 2), dtype=float32, numpy=
    array([[[-0.30938825,  0.40093166],
            [ 1.5417175 ,  0.        ]],
    
           [[-0.7977963 ,  0.        ],
            [ 0.        , -0.75159657]],
    
           [[ 1.7954558 ,  0.19909047],
            [-0.2359499 ,  0.        ]]], dtype=float32)>
    

    最低要求:

    tensorflow==2.0
    tensorflow-probability==0.7
    

    【讨论】:

    • 啊,我明白了,你说对了一部分。只有 tfp 0.9 需要 tf 2.1。如果出于某种原因您更喜欢 tf 2.0,则可以使用 tfp 0.8 或 0.7。但是,对于 tf 1.15,我的代码无法在任何 tfp 版本上运行。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-12-13
    • 1970-01-01
    • 2016-05-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多