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. HalfCauchy

torch.distributions.HalfCauchy

class HalfCauchy extends Distribution
new HalfCauchy(scale: number | Tensor, options?: DistributionOptions)
readonlyscale(Tensor)
– Scale parameter of the underlying Cauchy distribution.
readonlyarg_constraints(unknown)
readonlysupport(unknown)
readonlyhas_rsample(unknown)
readonlymean(Tensor)
readonlymode(Tensor)
readonlyvariance(Tensor)

Half-Cauchy distribution: folded Cauchy with extreme tail behavior for positive values.

Parameterized by scale γ. The half-Cauchy is obtained by taking the absolute value of a Cauchy(0, γ) distribution: if X = |Y| where Y ~ Cauchy(0, γ), then X ~ HalfCauchy(γ). Support is (0, ∞). Heavier-tailed than HalfNormal; standard prior for scale parameters in robust Bayesian analysis. Essential for:

  • Bayesian hierarchical models (weakly informative priors for scale/variance)
  • Heavy-tailed prior for scale parameters in robust inference
  • Prior for variance components in mixed-effects models
  • Robust Bayesian regression (accommodates outliers)
  • Mixture models with extreme value components
  • Prior for random effects variance in hierarchical structures
  • Stan default prior recommendation for scale parameters

Why Heavy Tails: Cauchy has no defined mean/variance. Half-Cauchy preserves this property, assigning non-negligible probability to very large scale values. This "doesn't constrain the scale" in a sense, allowing data to dictate the scale estimate more freely.

HalfNormal vs HalfCauchy: HalfNormal has tails ~exp(-x²), HalfCauchy has tails ~1/x². For priors: HalfCauchy is more weakly informative, HalfNormal is more conservative/skeptical.

PDF: f(x)=2πγ(1+(xγ)2)x>0CDF: F(x)=2πarctan⁡(xγ)Mean: undefined (does not exist)Variance: undefined (does not exist)Entropy: H(X)=ln⁡(2πγ)Tail behavior: f(x)∼2πγ⋅1(x/γ)2as x→∞\begin{aligned} \text{PDF: } f(x) = \frac{2}{\pi \gamma \left(1 + \left(\frac{x}{\gamma}\right)^2\right)} \quad x > 0 \\ \text{CDF: } F(x) = \frac{2}{\pi} \arctan\left(\frac{x}{\gamma}\right) \\ \text{Mean: } \text{undefined (does not exist)} \\ \text{Variance: } \text{undefined (does not exist)} \\ \text{Entropy: } H(X) = \ln(2\pi\gamma) \\ \text{Tail behavior: } f(x) \sim \frac{2}{\pi\gamma} \cdot \frac{1}{(x/\gamma)^2} \quad \text{as } x \to \infty \end{aligned}PDF: f(x)=πγ(1+(γx​)2)2​x>0CDF: F(x)=π2​arctan(γx​)Mean: undefined (does not exist)Variance: undefined (does not exist)Entropy: H(X)=ln(2πγ)Tail behavior: f(x)∼πγ2​⋅(x/γ)21​as x→∞​
  • No mean or variance: Like Cauchy, moments don't exist (heavy tails)
  • Heavier than HalfNormal: Polynomial tail decay (1/x²) vs exponential
  • Weakly informative: Often called "automatic" or "data-driven" prior (minimal input)
  • Stan recommendation: Default prior for scale parameters in Stan modeling language
  • Tail behavior: P(X x) ~ 2/(π(x/γ)²) for large x
  • Folded Cauchy: Half-Cauchy = |Cauchy(0, γ)|
  • CDF has simple form: F(x) = (2/π) arctan(x/γ) is easy to compute
  • No mean or variance: Methods assuming finite moments will fail
  • Extreme tail probability: Samples can easily exceed 10x the scale parameter
  • Prior specification: Large scale values give very weak prior (be careful of default scales)
  • Numerical issues: Very large samples can cause log_prob overflow/underflow

Examples

// Standard half-Cauchy: scale=1
const hc = new torch.distributions.HalfCauchy(1);
const samples = hc.sample([1000]);  // 1000 positive samples with heavy right tail
// Typical values: 0.5-5, but can easily exceed 20

// Bayesian prior for variance component in hierarchical model
// Prior for group-level variance in mixed-effects regression
const group_var_prior = new torch.distributions.HalfCauchy(1);
const group_scale = group_var_prior.sample([num_groups]);  // prior for each group
// Then: y_i ~ Normal(mean_i, group_scale[group_i])

// Heavy-tailed prior for regression coefficient prior
// More robust to outliers than normal prior
const robust_prior = new torch.distributions.HalfCauchy(2.5);  // Stan default recommendation
const prior_samples = robust_prior.sample([10000]);
// Allows some parameters to be very large without extreme penalty

// Batched distributions with different scales
const scales = torch.tensor([0.5, 1.0, 2.0, 5.0]);
const dist = new torch.distributions.HalfCauchy(scales);  // [4] batch shape
const samples = dist.sample();  // [4] shaped samples
// Larger scale → wider, heavier tail

// CDF and quantile functions
const hc = new torch.distributions.HalfCauchy(1);
const cdf_values = hc.cdf(torch.tensor([0.5, 1.0, 2.0]));
const q95 = hc.icdf(torch.tensor([0.95]));  // 95% quantile (quite large)
const q99 = hc.icdf(torch.tensor([0.99]));  // 99% quantile (very large)

// Comparing to HalfNormal: tail behavior
const hn = new torch.distributions.HalfNormal(1);
const hc = new torch.distributions.HalfCauchy(1);
const x_extreme = torch.tensor([10]);
const hn_prob = hn.log_prob(x_extreme);  // exp(-50) (virtually impossible)
const hc_prob = hc.log_prob(x_extreme);  // 1/101 (quite possible)
// HalfCauchy assigns vastly more probability to extreme values
Previous
half_open_interval
Next
HalfNormal