我有一个平均值矩阵 M 标准差矩阵 D ,两个尺寸相同。我想抽样一个随机正态值矩阵 A ,以便输入 A[i,j] 服从正态分布 M[i,j] 和标准差 D[i,j] .
M
D
A
A[i,j]
M[i,j]
D[i,j]
从文件中( https://www.tensorflow.org/api_docs/python/tf/random/normal?version=stable )我看到了 tf.random.normal 只取标量平均值和标准偏差。
tf.random.normal
我知道我可以写一个循环并对每个元素进行采样。但我认为这会很慢。
有更好的方法做我想做的事吗?
我假设期望随机矩阵的元素是独立分布的。你要做的事情可以通过以下方式实现:
random_matrix = tf.random.normal([num_rows, num_cols]) * D + M
这个 * 和 + 上面一行中的运算符被重载为TensorFlow的元素级乘法和加法操作。
*
+
这使用了高斯分布的这个特性:如果单位高斯( N(0, 1) )按因子缩放 d 被一个常数改变 m ,高斯变为 N(m, d) .
N(0, 1)
d
m
N(m, d)