我想知道以下函数的位置以及如何命名变量“ r”和“ p”:

def fit_mme(sample_data, name=None):
    """
        Calculates the Maximum-of-Momentum Estimator of NB(r, p) for a given NxM matrix `sample_data`

        :param sample_data: `(N, M)` matrix with `M` distributions containing `N` observed values each
        :return: estimated values of `r` and `p`
        """
    with tf.name_scope(name, "MME"):
        mean = tf.reduce_mean(sample_data, axis=0, name="mean")
        variance = tf.reduce_mean(tf.square(sample_data - mean),
                                  axis=0,
                                  name="variance")
        nan = tf.fill(tf.shape(variance), math.nan, name="NaN_constant")

        r_by_mean = tf.where(tf.less(mean, variance),
                             mean / (variance - mean),
                             nan)
        r = r_by_mean * mean
        p = 1 / (r_by_mean + 1)
        return r, p


如您所见,我已经命名为“ mean”,“ variance”和“ nan”,但是如何命名变量“ r”和“ p”呢?

另外,我应该将此方法打包到“ tf.contrib.distributions.NegativeBinomial”的子类中,还是应该为其创建一些utils.py文件?

最佳答案

您可以执行以下操作:

r = tf.multiply(r_by_mean, mean, name = 'r')




p = tf.divide(1, tf.add(r_by_mean, 1), name = 'p')


或者您可以(如Name the output of an expression in Tensorflow中的建议):

r = r_by_mean * mean
r = tf.identity(r, name = 'r')




p = 1 / (r_by_mean + 1)
p = tf.identity(p, name = 'p')



  另外,我应该将此方法打包到“ tf.contrib.distributions.NegativeBinomial”的子类中,还是应该为其创建一些utils.py文件?


我不会将其放置在tf之类的任何“官方”命名空间中,而是使用您自己的文件,这样很明显这是您/您的项目而非Tensorflow添加的功能(除非您需要修复/覆盖一些标准的tensorflow功能) )。

关于python - Tensorflow:命名变量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48348134/

10-12 00:30
查看更多