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
absabs_acosacos_acoshacosh_addadd_addbmmaddbmm_addcdivaddcdiv_addcmuladdcmul_addmmaddmm_addmvaddmv_addraddr_allamaxaminangleanyAnyTensorarccosarccos_arccosharccosh_arcsinarcsin_arcsinharcsinh_arctanarctan_arctan2arctanharctanh_argmaxargminargsortargwhereas_stridedasinasin_asinhasinh_atatanatan_atan2atan2_atanhatanh_backwardbaddbmmbaddbmm_bernoullibernoulli_bitwise_andbitwise_and_bitwise_left_shiftbitwise_left_shift_bitwise_notbitwise_not_bitwise_orbitwise_or_bitwise_right_shiftbitwise_right_shift_bitwise_xorbitwise_xor_bmmboolbytecauchy_ceilceil_charcholeskycholesky_inversecholesky_solvechunkclampclamp_clipclip_cloneconjconj_physicalcontiguouscopy_copysign_coscos_coshcosh_count_nonzerocpucrosscudacummaxcummincumprod_cumsum_cumulative_trapezoidcustom')]deg2raddeg2rad_destroydetdetachdetach_diagdiag_embeddiagflatdiagonaldiagonal_scatterdigamma_dimdivdiv_dividedivide_dotdoubleeigeigheigvalseigvalshelement_sizeeluelu_eqeq_erferf_erfcerfc_erfinverfinv_expexp_exp2exp2_expandexpand_asexpm1expm1_exponential_fftfill_fix_flattenflipfliplrflipudfloatfloat_powerfloorfloor_floor_divide_fmod_frac_frexpgathergcdgcd_gege_gelugelu_geometric_gergetCPUStorageglugreatergreater_equalgtgt_halfhardsigmoidhardsigmoid_hardswishhardswish_heavisideheaviside_hypothypot_i0_ifftindex_addindex_add_index_copyindex_copy_index_fillindex_fill_index_putindex_put_index_reduceindex_selectinnerintinverseis_complexis_contiguousis_floating_pointis_inferenceis_pinnedis_sharedis_signedisCPUisfiniteisinisinfisnanisneginfisposinfisrealisWebGPUitemkronkthvaluelcmlcm_ldexpldexp_lele_leaky_reluleaky_relu_lerplerp_lessless_equallgamma_loglog_log_normal_log10log10_log1plog1p_log2log2_logaddexplogaddexp2logcumsumexplogdetlogical_andlogical_and_logical_notlogical_not_logical_orlogical_or_logical_xorlogical_xor_logitlogit_logsumexplonglstsqltlt_lulu_solvemasked_fillmasked_fill_masked_scattermasked_scatter_masked_selectmasked_select_asyncmatmulmatrix_expmatrix_powermatrix_rankmaxmaximummeanmedianminminimummishmish_mmmodemsortmulmul_multiplymultiply_mvnan_to_numnanmeannanmediannanquantilenansumnarrow_copyndimensionnene_neg_negative_newnew_emptynew_fullnew_onesnew_tensornew_zerosnextafternextafter_nonzeronormnormal_not_equalnumelnumpyones_likeouterpermutepinversepolygammapositivepowpow_prodputput_qrquantilerad2degrad2deg_random_reciprocalreciprocal_register_hookregister_post_accumulate_grad_hookrelurelu_remainder_repeat_interleavereshapereshape_asretain_gradrfftrot90roundround_rsqrtrsqrt_scatterscatter_scatter_addscatter_add_scatter_reducescatter_reduce_selectselect_scatterseluselu_sgnsgn_shortsigmoidsigmoid_signsign_signbitsilusilu_sinsin_sincsinc_sinhsinh_sizesliceslice_scatterslogdetsoftplussoftplus_softsignsoftsign_solvesortsplitsqrtsqrt_squaresquare_squeezesqueeze_stdstorage_offsetstridesubsub_subtractsubtract_sumsvdtt_take_along_dimtantan_tanhtanh_tanhshrinktanhshrink_Tensortensor_splitTensorInternalsthresholdthreshold_totolisttopktoStringtracetransposetranspose_trapezoidtriangular_solvetrigammatriltril_triutriu_true_dividetrue_divide_trunc_typetype_asunflattenuniform_uniqueunique_consecutiveunsqueezeunsqueeze_varvdotviewview_aswebgpuwherexlogyxlogy_zero_zeros_like
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. Tensor
  5. Tensor
  6. cholesky

torch.Tensor.Tensor.cholesky

Tensor.cholesky(options?: CholeskyOptions): Tensor<DynamicShape, D, Dev>Tensor.cholesky(upper: boolean, options?: CholeskyOptions): Tensor<DynamicShape, D, Dev>

Computes the Cholesky decomposition of a symmetric positive-definite matrix.

Decomposes a symmetric positive-definite (SPD) matrix A into A = L L^T or A = U^T U, where L is lower triangular and U is upper triangular. Much faster than general LU decomposition and more stable for SPD matrices. Essential for:

  • Solving linear systems (via forward/backward substitution)
  • Computing log-determinants (sum of log diagonal)
  • Sampling from Gaussian distributions (standard form: sample N(0,I), multiply by L)
  • Numerical stability in optimization and inference

The decomposition is unique for positive-definite matrices. Input must be symmetric (self == self.T) and all eigenvalues must be positive.

Use Cases:

  • Gaussian likelihood computation (more stable than full matrix inverse)
  • Sampling from multivariate normal distributions
  • Solving structured linear systems efficiently
  • Computing matrix square roots and logarithms
  • Variational inference with Gaussian posteriors
  • Kalman filters and Gaussian processes
A=LLTtext(lower)orA=UTUtext(upper)Lij=begincasessqrtAii−sumk=1i−1Lik2i=jfrac1Ljj(Aij−sumk=1j−1LikLjk)i>j0i<jendcases\begin{aligned} A = L L^T \\text{ (lower) or } A = U^T U \\text{ (upper)} \\ L_{ij} = \\begin{cases} \\sqrt{A_{ii} - \\sum_{k=1}^{i-1} L_{ik}^2} & i = j \\\\ \\frac{1}{L_{jj}}(A_{ij} - \\sum_{k=1}^{j-1} L_{ik} L_{jk}) & i > j \\\\ 0 & i < j \\end{cases} \end{aligned}A=LLTtext(lower)orA=UTUtext(upper)Lij​=begincasessqrtAii​−sumk=1i−1​Lik2​frac1Ljj​(Aij​−sumk=1j−1​Lik​Ljk​)0endcases​i=ji>ji<j​
  • Symmetry required: Input must be symmetric (A == A.T)
  • Positive-definite: All eigenvalues must be strictly positive
  • Efficiency: O(n³/3) operations, 2-3x faster than LU
  • Stability: More numerically stable than LU for well-conditioned matrices
  • Uniqueness: The Cholesky factor is unique for positive-definite matrices
  • Diagonal positivity: All diagonal elements of L are positive
  • Non-symmetric input: Will fail or give incorrect results
  • Non-positive-definite: Will fail (all eigenvalues must be 0)
  • Singular matrices: Zero eigenvalues cause failure
  • Numerical issues: Very ill-conditioned matrices may have stability problems

Parameters

optionsCholeskyOptionsoptional

Returns

Tensor<DynamicShape, D, Dev>– Cholesky factor: lower triangular L (default) or upper triangular U

Examples

// Basic Cholesky decomposition
const A = torch.tensor([[4, 2], [2, 3]]);  // Symmetric positive-definite
const L = A.cholesky();  // Lower triangular factor
// Verify: L @ L.T ≈ A

// Solve a linear system using Cholesky
const A = torch.eye(3).mul(4);  // Diagonal positive-definite matrix
const b = torch.ones(3);
const L = A.cholesky();  // Factor: A = L L^T
const y = torch.linalg.solve_triangular(L, b, upper: false);  // Solve L y = b
const x = torch.linalg.solve_triangular(L.T, y, upper: true);  // Solve L^T x = y

// Sample from multivariate normal N(mu, Sigma)
const mu = torch.zeros(5);
const Sigma = torch.eye(5);  // Covariance matrix
const L = Sigma.cholesky();
const z = torch.randn(5);  // Standard normal
const sample = mu.add(L.matmul(z));  // Sample from N(mu, Sigma)

// Compute log determinant efficiently
const L = A.cholesky();
const logdet = 2 * L.diagonal().log().sum();  // log(det(A))

// Upper triangular form
const U = A.cholesky(true);  // A = U^T U
// Verify decomposition
const A_reconstructed = U.T.matmul(U);

See Also

  • PyTorch torch.cholesky() (or tensor.cholesky())
  • cholesky_inverse - Compute inverse using Cholesky factor
  • cholesky_solve - Solve linear system using Cholesky factor
  • lu - General LU decomposition (works for non-SPD matrices)
  • qr - QR decomposition alternative
  • svd - Singular value decomposition (more general but slower)
Previous
Tensor.char
Next
Tensor.cholesky_inverse