Skip to main content
torch.js has not been released yet.
torch.js logotorch.js logotorch.js
PlaygroundContact
Login
Documentation
IntroductionType SafetyTensor ExpressionsTensor IndexingEinsumEinopsAutogradTraining a ModelProfiling & MemoryPyTorch MigrationBest PracticesRuntimesPerformancePyTorch CompatibilityBenchmarksDType Coverage
ArgConstraintsBernoulliBetaBinomialbroadcast_allCategoricalCauchycdfcheckChi2ClampOptionsclampTensorConstraintDirichletDistributionDistributionOptionsentropyentropyenumerate_supportEnumerateSupportOptionsexpandExpandOptionsExponentialExponentialFamilyextendedShapeFisherSnedecorGammaGeometricgetDeviceFromTensorsgetDTypeFromTensorsgreater_thangreater_than_eqGumbelhalf_open_intervalHalfCauchyHalfNormalicdfindependentIndependentinteger_intervalintervalInverseGammakl_divergenceKumaraswamyLaplacelazy_propertyless_thanlog_probLogisticNormallogits_to_probsLogitsToProbsOptionsLogNormalLowRankMultivariateNormalMixtureSameFamilyMultinomialMultivariateNormalNegativeBinomialNormalOneHotCategoricalParetoperplexityPoissonprobs_to_logitsProbsToLogitsOptionsregister_klRelaxedBernoulliRelaxedOneHotCategoricalrsamplesamplesample_nSampleOptionsset_default_validate_argsstackStackOptionsStudentTStudentTOptionssumRightmosttoStringtoStringtoTensorTransformedDistributionUniformVonMisesWeibullWishart
absacosacoshAdaptivePool1dShapeAdaptivePool2dShapeaddaddbmmAddbmmOptionsaddcdivAddcdivOptionsaddcmulAddcmulOptionsaddmmAddmmOptionsaddmvAddmvOptionsaddrAddrOptionsadjointallallcloseAllcloseOptionsAlphaBetaOptionsamaxaminaminmaxAminmaxOptionsangleanyapplyOutarangeare_deterministic_algorithms_enabledargmaxargminargsortargwhereas_stridedas_tensorasinasinhAssertNoShapeErrorAssertNotErrorAsStridedOptionsAtat_error_index_out_of_boundsatanatan2atanhatleast_1datleast_2datleast_3dAtShapeautocast_decrement_nestingautocast_increment_nestingautograd_gradient_mismatch_errorautograd_not_registered_errorAutogradConfigAutogradDeviceAutogradDTypeAutogradEntryAutogradHandleAutogradHandleImplAxesRecordBackwardFnbaddbmmBaddbmmOptionsbartlett_windowBaseKernelConfigbatch_dimensions_do_not_match_errorbernoulliBernoulliOptionsBinaryBackwardFnBinaryBroadcastResultBinaryDTypeBinaryKernelConfigCPUBinaryKernelCPUBinaryOpConfigBinaryOpNamesBinaryOpSchemaBinaryOptionsbincountBincountOptionsbitwise_andbitwise_left_shiftbitwise_notbitwise_orbitwise_right_shiftbitwise_xorblackman_windowblock_diagbmmBooleanDTypeRulebroadcast_error_incompatible_dimensionsbroadcast_shapesbroadcast_tensorsbroadcast_toBroadcastShapeBroadcastShapeRulebroadcastShapesbucketizeBucketizeOptionsBufferUsagebuildEinopsErrorbuildErrorMessagecanBroadcastTocartesian_prodcatCatOptionsCatShapeCauchyOptionscdistCdistOptionsceilceluCeluFunctionalOptionschain_matmulCheckShapeErrorCholeskyShapechunkchunk_error_dim_out_of_rangeChunkOptionsclampClampOptionsclear_autocast_cacheclearEinopsCacheclearEinsumCacheclonecolumn_stackcombinationsCombinationsOptionscompiled_with_cxx11_abicomplexconjconj_physicalcontiguousConv1dShapeConv2dShapeConv3dShapeConvTranspose2dShapecopysigncorrcoefcoscoshcount_nonzeroCountNonzeroOptionscovcoverage_reportcoverageReportCoverageReportCovOptionsCPUForwardFnCPUKernelConfigCPUKernelEntryCPUOnlyResultCPUTensorDatacreateCumExtremeResultcreateTorchCreationOpSchemaCumExtremeResultcummaxcummincumprodCumShapecumsumcumulative_trapezoidCumulativeOptionsCumulativeOptionsWithDimdeg2raddetachDeterministicOptionsDetShapeDevicedevice_error_requiresDeviceBufferDeviceCapabilitiesDeviceCheckedResultDeviceConfigDeviceContextDeviceEntryDeviceHandleDeviceInputDeviceOptionsDeviceRegistryDeviceTypediagdiag_embedDiagEmbedOptionsdiagflatDiagflatOptionsDiagFlatOptionsdiagonal_scatterDiagonalOptionsDiagonalScatterOptionsDiagOptionsDiagShapediffDiffOptionsdigammadimension_error_out_of_rangeDispatchConfigdistDistOptionsdivdotDotShapeRuleDoubleDoubleDimdropoutDropoutFunctionalOptionsdsplitdstackDTypedtype_already_registered_errordtype_components_mismatch_errordtype_not_found_errorDTypeComponentsDTypeConfigDTypeCoverageReportDTypeDisplayConfigDTypeEntryDTypeHandleDTypeHandleImplDTypeInfoDTypeRegistryDTypeRuleDTypeSerializationConfigDynamicShapeEigShapeeinops_error_ambiguous_decompositioneinops_error_anonymous_in_outputeinops_error_dimension_mismatcheinops_error_invalid_patterneinops_error_reduce_undefined_outputeinops_error_repeat_missing_sizeeinops_error_undefined_axiseinsumeinsum_error_dimension_mismatcheinsum_error_index_out_of_rangeeinsum_error_invalid_equationeinsum_error_invalid_sublist_elementeinsum_error_operand_count_mismatcheinsum_error_subscript_rank_mismatcheinsum_error_unknown_output_indexEinsumOptionsEinsumOutputShapeEllipsiseluelu_EluFunctionalOptionsembedding_bag_error_requires_2d_inputemptyempty_cacheempty_likeeqequalerferfcerfinvexpexp2expandexpand_asexpand_error_incompatibleExpandShapeexpm1ExponentialOptionseyeEyeOptionsfftFFTOptionsfindKernelWithPredicatefindSimilarPatternsflattenFlattenOptionsFlattenShapeflipflip_error_dim_out_of_rangefliplrFlipShapeflipudfloat_powerFloatDTypeRulefloorfloor_dividefmaxfminfmodformatEquationErrorformatShapefracfrexpfrombufferfullfull_likefunction_already_registered_errorFunctionConfigFunctionEntryFunctionHandlegathergather_error_dim_out_of_rangeGatherShapegcdgegeluGeometricOptionsget_autocast_cpu_dtypeget_autocast_gpu_dtypeget_autocast_ipu_dtypeget_autocast_xla_dtypeget_default_deviceget_default_dtypeget_deterministic_debug_modeget_device_configget_device_contextget_device_moduleget_dtype_infoget_file_pathget_float32_matmul_precisionget_num_interop_threadsget_num_threadsget_op_infoget_printoptionsget_real_dtypeget_rng_stategetAutogradgetDTypegetEinopsCacheSizegetEinsumCacheSizegetFunctiongetKernelgetMethodgetOpInfoGetOpKindGetOpSchemagetScalarKernelgluGluFunctionalOptionsGradContextGradFnGradientsForgtHalfHalfDimhamming_windowhann_windowhardshrinkhardsigmoidhardswishhardtanhhardtanh_HardtanhFunctionalOptionshas_autogradhas_devicehas_dtypehas_kernelhasAutogradhasDTypehasFunctionhasKernelhasMethodhasScalarKernelHasShapeErrorheavisidehistcHistcOptionshistogramHistogramOptionsHistogramResulthsplithstackhypoti0IdentityShapeifftimagindex_addindex_copyindex_fillindex_putindex_reduceindex_selectindex_select_error_dim_out_of_rangeIndexPutOptionsIndexSelectShapeIndexSpecIndicesOptionsIndicesSpecinitialize_deviceInputsForInsertDiminvalid_config_errorinverseInverseShapeirfftis_anomaly_check_nan_enabledis_anomaly_enabledis_autocast_cache_enabledis_autocast_cpu_enabledis_autocast_ipu_enabledis_autocast_xla_enabledis_complexis_complex_dtypeis_cpu_only_modeis_deterministic_algorithms_warn_only_enabledis_floating_pointis_floating_point_dtypeis_inference_mode_enabledis_nonzerois_tensoris_warn_always_enabledis_webgpu_availableIs2DIsAtLeast1DIsBinaryOpIsBinaryOpNameiscloseIscloseOptionsisfiniteisinisinfisnanisneginfisposinfisrealIsReductionOpIsReductionOpNameIsRegistryErrorIsShapeErroristftISTFTOptionsIsUnaryOpIsUnaryOpNameitem_error_not_scalarItemResultkaiser_windowKaiserWindowOptionskernel_not_registered_errorkernel_signature_mismatch_errorKernelConfigKernelConfigWebGPUKernelEntryKernelHandleKernelInfoKernelPredicateKernelRegistryKernelWebGPUkronkthvalueKthvalueOptionslcmldexpleleaky_reluleaky_relu_LeakyReluFunctionalOptionslerplevenshteinDistancelgammalinalg_error_not_square_matrixlinalg_error_requires_2dlinalg_error_requires_at_least_2dlinearlinspacelist_custom_deviceslist_custom_dtypeslist_deviceslist_dtypeslist_functionslist_kernelslist_methodslist_opslistCustomDTypeslistDTypeslistFunctionslistKernelsListKernelsOptionslistMethodslistOpsListOpsOptionsloglog_softmaxlog10log1plog2logaddexplogaddexp2logcumsumexplogical_andlogical_notlogical_orlogical_xorLogitOptionsLogNormalOptionsLogOptionslogsigmoidlogspacelogsumexpLogsumexpOptionsltLUShapeLuSolveOptionsmasked_fillmasked_selectmasked_select_asyncMaskSpecmatmulmatmul_error_inner_dimensions_do_not_matchMatmul2DShapeMatmulShapeMatmulShapeRuleMatrixTransposeShapemaxmaximummeanmedianmemory_statsmemory_summarymeshgridmethod_already_registered_errormethod_dtype_not_supported_errorMethodConfigMethodEntryMethodHandleminminimummishmmMMShapeRulemodemovedimmsortmulmultinomialmultinomial_asyncMultinomialAsyncOptionsMultinomialOptionsMultiplyBymvMVShapeRulenan_to_numnanmeannanmediannanquantileNanReductionOptionsnansumNanToNumOptionsnarrownarrow_copynarrow_error_length_exceeds_boundsnarrow_error_start_out_of_boundsNarrowShapeneneedsBroadcastnegNegativeDimnextafternonzeroNonzeroOptionsnormnormalNormalOptionsNormOptionsnumelonesones_likeop_kind_mismatch_errorop_not_found_errorOpCoverageEntryOpInfoOpKindOpNameOpSchemaOpSchemasouterOuterShapepackPackShapepermutepermute_error_dimension_count_mismatchPermuteShapepoissonpolarPool1dShapePool2dShapePool3dShapepositivepowpreluPrintOptionsprodprofiler_allow_cudagraph_cupti_lazy_reinit_cuda12promote_typesPromoteDTypeRulePutOptionsquantileQuantileOptionsrad2degrandrand_likerandintrandint_likeRandintLikeOptionsRandintOptionsrandnrandn_likeRandomLikeOptionsRandomOptionsrandpermRangeSpecRankravelrealrearrangeRearrangeOptionsRearrangeShapereciprocalreduceReduceOperationReduceOptionsReduceShapeReductionKernelConfigCPUReductionKernelCPUReductionOpNamesReductionOpSchemaReductionOptionsReductionShapeRuleregister_backwardregister_deviceregister_dtyperegister_forwardregister_functionregister_methodregister_scalar_forwardregisterAutogradRegisterBackwardOptionsregisterBinaryOpregisterDTypeRegisterDTypeOptionsRegisteredDTyperegisterFunctionRegisterFunctionOptionsregisterKernelRegisterKernelOptionsregisterMethodRegisterMethodOptionsregisterScalarKernelregisterUnaryOpregistration_failed_errorrelurelu_relu6ReluFunctionalOptionsremainderRemoveDimrepeatrepeat_interleaveRepeatInterleaveOptionsRepeatOptionsRepeatShapeReplaceDimrequireWebGPUreset_peak_memory_statsreshapeReshapeShaperesult_typerfftrollRollOptionsrot90Rot90Optionsroundrrelurrelu_RreluFunctionalOptionsrsqrtSafeExpandShapeSameDTypeRuleSameShapeRuleSaveForBackwardScalarCPUForwardFnScalarCPUKernelConfigScalarKernelEntryScalarKernelHandleScalarWebGPUKernelConfigScaleDimscatterscatter_addscatter_add_scatter_error_dim_out_of_rangescatter_reducescatter_reduce_ScatterReduceOptionsScatterShapesearchsortedSearchSortedOptionsselectselect_error_index_out_of_boundsselect_scatterSelectShapeseluset_default_deviceset_default_tensor_typeset_deterministic_debug_modeset_float32_matmul_precisionset_printoptionsset_warn_alwaysSetupContextFnShapeShapeCheckedResultShapedTensorShapeErrorMessageShapeOpSchemaShapeRulesigmoidsignsignbitsilusinsincsinhSizeOptionsslice_error_out_of_boundsslice_scatterSliceOptionsSliceScatterOptionsSliceShapeSliceSpecsoftmaxsoftmax_error_dim_out_of_rangeSoftmaxShapesoftminSoftminFunctionalOptionssoftplusSoftplusFunctionalOptionssoftshrinksoftsignsortSortOptionssplitsplit_error_dim_out_of_rangeSplitOptionssqrtsquaresqueezeSqueezeOptionsSqueezeShapestackStackOptionsStackShapestdstd_meanStdVarMeanOptionsStdVarOptionsstftSTFTOptionsStrideOptionssubSublistSublistElementSubscriptIndexsumSVDShapeswapaxessym_floatsym_intsym_notttaketake_along_dimTakeAlongDimOptionstantanhtanhshrinktensortensor_splitTensorCreatorTensorDatatensordotTensordotOptionsTensorLikeTensorMetaTensorOptionsTensorStoragethresholdthreshold_tileTileShapeToOptionstopkTopkOptionsTorchtraceTraceShapetransposetranspose_dims_error_out_of_rangetranspose_error_requires_2d_tensorTransposeDimsShapeTransposeDimsShapeCheckedTransposeShapetrapezoidTrapezoidOptionsTriangularOptionstriltril_indicesTriOptionsTripletriutriu_indicestrue_dividetruncTupleOfLengthTypedArrayTypedArrayForTypedStorageTypeOptionsUnaryBackwardFnUnaryDTypeUnaryKernelConfigCPUUnaryKernelCPUUnaryOpConfigUnaryOpFnUnaryOpNamesUnaryOpParamsUnaryOpSchemaUnaryOptionsunbindunbind_error_dim_out_of_rangeUnbindOptionsunflattenUniformOptionsuniqueunique_consecutiveUniqueConsecutiveOptionsUniqueOptionsunpackUnpackShapeunravel_indexunregister_deviceunsqueezeUnsqueezeOptionsUnsqueezeShapeuse_deterministic_algorithmsValidateBatchedSquareMatrixValidateChunkDimValidatedEinsumShapevalidateDeviceValidateDeviceValidatedRearrangeShapeValidatedReduceShapeValidatedRepeatShapevalidateDTypeValidateEinsumValidateOperandCountValidateRanksValidateScalarValidateSplitDimValidateSquareMatrixValidateUnbindDimValueOptionsvar_var_meanvdotviewview_as_complexview_as_realvmapvsplitvstackWebGPUKernelConfigWebGPUOnlyResultWebGPUTensorDatawhereWindowOptionsxlogyzeroszeros_like
torch.js· 2026
LegalTerms of UsePrivacy Policy
/
/
  1. docs
  2. torch.js
  3. torch
  4. distributions
  5. MultivariateNormal

torch.distributions.MultivariateNormal

class MultivariateNormal extends Distribution
new MultivariateNormal(loc: number[] | Tensor, options: { covariance_matrix?: Tensor; precision_matrix?: Tensor; scale_tril?: Tensor; } & DistributionOptions)
readonlyloc(Tensor)
– Mean of the distribution.
readonlyarg_constraints(unknown)
readonlysupport(unknown)
readonlyhas_rsample(unknown)
readonlyscale_tril(Tensor)
– Get the Cholesky factor of the covariance matrix.
readonlycovariance_matrix(Tensor)
– Get the covariance matrix.
readonlyprecision_matrix(Tensor)
– Get the precision matrix (inverse of covariance).
readonlymean(Tensor)
readonlymode(Tensor)
readonlyvariance(Tensor)

Multivariate Normal distribution: joint distribution over multiple dimensions.

Generalization of normal distribution to multiple correlated variables. Fundamental distribution for multivariate statistics and machine learning. Essential for:

  • Multivariate regression and Gaussian processes
  • Bayesian neural networks (weight priors)
  • Variational autoencoders (VAE latent distributions)
  • Gaussian mixture models and clustering
  • Kalman filters and state-space models
  • Principal component analysis (PCA) modeling
  • Multivariate hypothesis testing
  • Latent variable models and factor analysis

Parameterized by mean vector μ ∈ ℝ^d and covariance matrix Σ ∈ ℝ^(d×d) (positive definite) PDF: f(x) = (2π)^(-d/2) |Σ|^(-1/2) exp(-0.5 * (x-μ)^T Σ^(-1) (x-μ))

PDF: f(x)=(2π)−d/2∣Σ∣−1/2exp⁡(−12(x−μ)TΣ−1(x−μ))Mean: E[X]=μCovariance: Cov(X)=ΣEntropy: H(X)=d2ln⁡(2πe)+12ln⁡∣Σ∣Mahalanobis distance: (x−μ)TΣ−1(x−μ)∼χd2\begin{aligned} \text{PDF: } f(x) = (2\pi)^{-d/2} |\Sigma|^{-1/2} \exp\left(-\frac{1}{2}(x-\mu)^T\Sigma^{-1}(x-\mu)\right) \\ \text{Mean: } \mathbb{E}[X] = \mu \\ \text{Covariance: } \text{Cov}(X) = \Sigma \\ \text{Entropy: } H(X) = \frac{d}{2}\ln(2\pi e) + \frac{1}{2}\ln|\Sigma| \\ \text{Mahalanobis distance: } (x-\mu)^T\Sigma^{-1}(x-\mu) \sim \chi^2_d \end{aligned}PDF: f(x)=(2π)−d/2∣Σ∣−1/2exp(−21​(x−μ)TΣ−1(x−μ))Mean: E[X]=μCovariance: Cov(X)=ΣEntropy: H(X)=2d​ln(2πe)+21​ln∣Σ∣Mahalanobis distance: (x−μ)TΣ−1(x−μ)∼χd2​​
  • Cholesky form: scale_tril is most numerically stable for sampling
  • Marginals: Each dimension marginally is univariate N(μ_i, Σ_ii)
  • Conditionals: Conditioning on subset dimensions yields normal
  • Linear transforms: A X + b has MVN(A μ + b, A Σ A^T)
  • Independence: Uncorrelated (zero covariance) implies independence for joint normal
  • Mahalanobis distance: (x-μ)^T Σ^(-1) (x-μ) ~ Chi2(d) for x ~ MVN
  • Positive definite: Covariance/precision must be positive definite
  • Dimension mismatch: Covariance must be d×d for d-dim mean
  • Singularity: Singular covariance causes numerical issues
  • Computation: Computing covariance inverse can be numerically unstable
  • High dimensions: Covariance becomes dense; consider factorizations

Examples

// Standard bivariate normal: independent normals N(0,1)
const m = new torch.distributions.MultivariateNormal(
  torch.tensor([0.0, 0.0]),
  { covariance_matrix: torch.eye(2) }
);
m.sample();  // 2D sample from standard normal

// Correlated bivariate normal
const mean = torch.tensor([1.0, 2.0]);
const cov = torch.tensor([
  [1.0, 0.5],   // variance=1, correlation=0.5
  [0.5, 1.0]    // variance=1
]);
const correlated = new torch.distributions.MultivariateNormal(mean, { covariance_matrix: cov });
const sample = correlated.sample();  // Positively correlated pair

// Using Cholesky factorization (numerically stable)
// More efficient: Σ = L @ L.T
const L = torch.tensor([[1.0, 0.0], [0.5, Math.sqrt(0.75)]]);
const chol_dist = new torch.distributions.MultivariateNormal(
  torch.zeros([2]),
  { scale_tril: L }
);  // Cholesky parameterization

// Using precision matrix (inverse covariance)
// Useful in graphical models where precision encodes sparsity
const precision = torch.inverse(cov);
const precision_dist = new torch.distributions.MultivariateNormal(
  mean,
  { precision_matrix: precision }
);

// Gaussian process: predict at multiple points
// Joint distribution over function values at d points
const mean_vector = torch.randn([100]);  // Mean at 100 points
const K = kernel_matrix(x_train, x_train);  // Kernel/covariance matrix
const gp_dist = new torch.distributions.MultivariateNormal(mean_vector, { covariance_matrix: K });
const f_samples = gp_dist.sample([10]);  // 10 GP function samples

// Variational autoencoder (VAE): latent distribution
const z_dim = 32;  // Latent dimension
const z_mean = encoder(x);  // Learned means
const z_logvar = log_encoder(x);  // Learned log-variances
const z_cov = torch.diag(z_logvar.exp());  // Diagonal covariance
const z_dist = new torch.distributions.MultivariateNormal(
  z_mean,
  { covariance_matrix: z_cov }
);
const z = z_dist.rsample();  // Reparameterized sample

// Batched: multiple multivariate normals
const batch_means = torch.randn([10, 5]);  // 10 distributions, dimension 5
const cov_batch = torch.eye(5).unsqueeze(0).expand([10, 5, 5]);  // Same cov for all
const batch_dist = new torch.distributions.MultivariateNormal(
  batch_means,
  { covariance_matrix: cov_batch }
);
Previous
Multinomial
Next
NegativeBinomial