Tensorflow 中的随机正态矩阵

Random normal matrix in Tensorflow

我有一个均值矩阵 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 仅采用标量均值和标准差。

我知道我可以编写一个循环并对每个元素进行采样。但我认为这会很慢。

有没有更好的方法来做我想做的事?

我假设所需随机矩阵的元素是独立分布的。您尝试做的事情可以通过以下方式实现:

random_matrix = tf.random.normal([num_rows, num_cols]) * D + M

上一行中的 *+ 运算符被重载到 TensorFlow 的逐元素乘法和加法运算中。

这使用了这个 属性 高斯分布:如果单位高斯 (N(0, 1)) 缩放一个因子 d 并移动一个常数 m,则高斯变为 N(m, d).