У меня есть функция, которая дает мне распределения вероятностей для каждого класса с точки зрения матрицы, соответствующей средним значениям, и другой матрицы, соответствующей значениям дисперсии. Например, если бы у меня было четыре класса, у меня были бы следующие результаты:
y_means = [1,2,3,4]
y_variance = [0.01,0.02,0.03,0.04]
Мне нужно сделать следующий расчет средних значений, чтобы продолжить остальную часть моей программы:
y_means = np.array(y_means)
y_means = np.reshape(y_means,(y_means.size,1))
A = np.random.randn(10,y_means.size)
y_means = np.matmul(A,y_means)
Здесь я использовал функцию numpy.random.randn для создания случайных выборок из стандартного нормального распределения, а затем умножил их на матрицу со средним значением, чтобы получить новую выходную матрицу. Тогда размер выходной матрицы будет иметь размер (10 x 1).
Мне нужно сделать аналогичный расчет, чтобы мои output_variances также были матрицей (10 x 1). Но нет смысла умножать таким же образом дисперсии на случайные выборки из стандартного нормального распределения, потому что это также приведет к отрицательным значениям. Это нежелательно, потому что моей конечной целью было бы создать нормальное распределение с этими средними значениями и соответствующими им значениями дисперсии, используя:
torch.distributions.normal.Normal(loc=y_means, scale=y_variance)
Итак, мой вопрос: есть ли какой-либо метод, с помощью которого я получаю значение дисперсии для каждой случайной выборки, сгенерированной numpy.random.randn? Потому что тогда умножение такой матрицы имело бы больше смысла с output_variance.
Или, если есть какая-либо другая стратегия для этого, о которой я мог бы не знать, пожалуйста, дайте мне знать.