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

torch.distributions.InverseGamma

class InverseGamma extends Distribution
new InverseGamma(concentration: number | Tensor, rate: number | Tensor, options?: DistributionOptions)
readonlyconcentration(Tensor)
– Concentration parameter (alpha, shape parameter).
readonlyrate(Tensor)
– Rate parameter (beta, inverse scale).
readonlyarg_constraints(unknown)
readonlysupport(unknown)
readonlyhas_rsample(unknown)
readonlymean(Tensor)
readonlymode(Tensor)
readonlyvariance(Tensor)

Inverse Gamma distribution: conjugate prior for variance in normal models.

Parameterized by concentration α and rate β. If X ~ Gamma(α, β), then 1/X ~ InverseGamma(α, β). Support is (0, ∞). Critical for Bayesian statistics because it's the conjugate prior for the variance of normal distributions - posterior is also InverseGamma with updated parameters. Essential for:

  • Bayesian inference for variance and precision parameters (conjugate prior)
  • Prior for normal distribution variance (standard choice in Bayesian regression)
  • Prior for exponential distribution scale parameters
  • Hierarchical Bayesian models with variance components
  • Modeling reciprocals of positive quantities
  • Empirical Bayes and hyperparameter estimation
  • Mixed-effects models with random effect variances

Conjugate Prior Property: If data X₁,...,Xₙ ~ N(μ, σ²) with known μ, and prior σ² ~ InverseGamma(α, β), then posterior σ² | data ~ InverseGamma(α + n/2, β + SS/2) where SS is sum of squared deviations. The parameters update in closed form (Bayesian advantage).

Relationship to Gamma: InverseGamma(α, β) = 1/Gamma(α, β). This reciprocal relationship means sampling is done by sampling Gamma and inverting.

PDF: f(x)=βαΓ(α)x−α−1exp⁡(−βx)x>0Mean: E[X]=βα−1α>1(undefined if α≤1)Variance: Var(X)=β2(α−1)2(α−2)α>2Mode: βα+1Relationship: InverseGamma(α,β)=1Gamma(α,β)\begin{aligned} \text{PDF: } f(x) = \frac{\beta^\alpha}{\Gamma(\alpha)} x^{-\alpha-1} \exp\left(-\frac{\beta}{x}\right) \quad x > 0 \\ \text{Mean: } \mathbb{E}[X] = \frac{\beta}{\alpha - 1} \quad \alpha > 1 \quad \text{(undefined if } \alpha \leq 1\text{)} \\ \text{Variance: } \text{Var}(X) = \frac{\beta^2}{(\alpha-1)^2(\alpha-2)} \quad \alpha > 2 \\ \text{Mode: } \frac{\beta}{\alpha + 1} \\ \text{Relationship: } \text{InverseGamma}(\alpha, \beta) = \frac{1}{\text{Gamma}(\alpha, \beta)} \end{aligned}PDF: f(x)=Γ(α)βα​x−α−1exp(−xβ​)x>0Mean: E[X]=α−1β​α>1(undefined if α≤1)Variance: Var(X)=(α−1)2(α−2)β2​α>2Mode: α+1β​Relationship: InverseGamma(α,β)=Gamma(α,β)1​​
  • Conjugate for normal variance: Posterior also InverseGamma (closed-form update)
  • Mean undefined if α ≤ 1: Mean only exists for α 1
  • Variance undefined if α ≤ 2: Variance only exists for α 2
  • Mode decreases with α: Mode = β/(α+1), lower α gives higher mode
  • Reciprocal of Gamma: Sampling via Gamma reciprocal
  • Right-skewed: Longer right tail (heavier for small α)
  • Heavy tails: Assign probability to very large values (useful as prior for variance)
  • α, β must be positive: α ≤ 0 or β ≤ 0 causes errors
  • Mean undefined for α ≤ 1: Only exists when α 1
  • Variance undefined for α ≤ 2: Variance doesn't exist unless α 2
  • Weakly-informative: Very small α (e.g., 0.001) gives minimal constraints

Examples

// Simple inverse gamma: α=2, β=1
const ig = new torch.distributions.InverseGamma(2, 1);
const samples = ig.sample([1000]);
const mean = ig.mean;  // 1.0
const variance = ig.variance;  // 1.0

// Bayesian inference: conjugate prior for normal variance
// Prior: σ² ~ InverseGamma(α₀, β₀)
const alpha0 = 2;
const beta0 = 1;
const prior = new torch.distributions.InverseGamma(alpha0, beta0);

// Observe data and update posterior
const n = 50;  // sample size
const ss = 25;  // sum of squared deviations
const alpha_post = alpha0 + n / 2;  // α₀ + n/2
const beta_post = beta0 + ss / 2;   // β₀ + SS/2
const posterior = new torch.distributions.InverseGamma(alpha_post, beta_post);
// Posterior automatically updated with closed form!\n *
// Prior for regression variance in linear models
// Standard weakly-informative prior: InverseGamma(0.001, 0.001)
const weak_prior = new torch.distributions.InverseGamma(0.001, 0.001);
const weak_samples = weak_prior.sample([100]);
// Very dispersed prior, lets data dominate\n *
// Batched distributions with different parameters
const alphas = torch.tensor([0.5, 1.0, 2.0, 5.0]);
const betas = torch.tensor([1.0, 1.0, 1.0, 1.0]);
const dist = new torch.distributions.InverseGamma(alphas, betas);
const samples = dist.sample();  // [4] shaped samples
// Smaller α → heavier right tail
n *
// Comparing tail behavior with different concentration parameters
const light = new torch.distributions.InverseGamma(5, 1);  // light tail
const heavy = new torch.distributions.InverseGamma(0.5, 1);  // heavy tail
const x = torch.tensor([10]);
const light_prob = light.log_prob(x);  // exp(-100) region
const heavy_prob = heavy.log_prob(x);  // much larger probability

// Posterior for hierarchical variance component
// Multi-level model: within-group variance hierarchical prior
const hier_prior = new torch.distributions.InverseGamma(3, 2);
const hier_var = hier_prior.sample([10]);  // 10 group-level variances
Previous
interval
Next
kl_divergence