Tensorflow:命名变量
Tensorflow: Naming variables
我想知道将以下函数放在哪里以及如何命名变量 "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" 的子 class 中,还是应该为其创建一些 utils.py 文件?
您可以:
r = tf.multiply(r_by_mean, mean, name = 'r')
和
p = tf.divide(1, tf.add(r_by_mean, 1), name = 'p')
或者您可以(如 中所建议):
r = r_by_mean * mean
r = tf.identity(r, name = 'r')
和
p = 1 / (r_by_mean + 1)
p = tf.identity(p, name = 'p')
Also, should i pack this method into a sub-class of "tf.contrib.distributions.NegativeBinomial" or should I create some utils.py file for it?
我不会将它放入任何 'official' 命名空间,例如 tf,而是使用您自己的文件,这样很明显这是您/您的项目而不是 Tensorflow 添加的功能(除非您需要修复/覆盖一些标准的张量流功能)。
我想知道将以下函数放在哪里以及如何命名变量 "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" 的子 class 中,还是应该为其创建一些 utils.py 文件?
您可以:
r = tf.multiply(r_by_mean, mean, name = 'r')
和
p = tf.divide(1, tf.add(r_by_mean, 1), name = 'p')
或者您可以(如
r = r_by_mean * mean
r = tf.identity(r, name = 'r')
和
p = 1 / (r_by_mean + 1)
p = tf.identity(p, name = 'p')
Also, should i pack this method into a sub-class of "tf.contrib.distributions.NegativeBinomial" or should I create some utils.py file for it?
我不会将它放入任何 'official' 命名空间,例如 tf,而是使用您自己的文件,这样很明显这是您/您的项目而不是 Tensorflow 添加的功能(除非您需要修复/覆盖一些标准的张量流功能)。