L i#ddlZddlmZmZddlZddlmZddlmZddlm Z ddl m Z m Z m Z mZmZddlmZddlmZmZmZd gZGd d e Zy) N)OptionalUnion)Tensor) constraints)ExponentialFamily) broadcast_all clamp_probs lazy_propertylogits_to_probsprobs_to_logits) binary_cross_entropy_with_logits)_Number_sizeNumberContinuousBernoullic eZdZdZej ej dZej ZdZ dZ d de e e efde e e efdeeefd e ed df fd Zd!fd Zd ZdZdZdZed e fdZed e fdZed e fdZed e fdZed e fdZed ej@fdZ!ej@fdZ"ej@fde#d e fdZ$dZ%dZ&dZ'dZ(ed ee fdZ)dZ*xZ+S)"ra Creates a continuous Bernoulli distribution parameterized by :attr:`probs` or :attr:`logits` (but not both). The distribution is supported in [0, 1] and parameterized by 'probs' (in (0,1)) or 'logits' (real-valued). Note that, unlike the Bernoulli, 'probs' does not correspond to a probability and 'logits' does not correspond to log-odds, but the same names are used due to the similarity with the Bernoulli. See [1] for more details. Example:: >>> # xdoctest: +IGNORE_WANT("non-deterministic") >>> m = ContinuousBernoulli(torch.tensor([0.3])) >>> m.sample() tensor([ 0.2538]) Args: probs (Number, Tensor): (0,1) valued parameters logits (Number, Tensor): real valued parameters whose sigmoid matches 'probs' [1] The continuous Bernoulli: fixing a pervasive error in variational autoencoders, Loaiza-Ganem G and Cunningham JP, NeurIPS 2019. https://arxiv.org/abs/1907.06845 )probslogitsrTNrrlims validate_argsreturncN|du|duk(r td|t|t}t|\|_|A|j dj |jjs tdt|j|_n&|Jt|t}t|\|_ | |jn |j|_ |rtj}n|jj}||_t|A||y)Nz;Either `probs` or `logits` must be specified, but not both.rz&The parameter probs has invalid valuesr) ValueError isinstancerrrarg_constraintscheckallr r_paramtorchSizesize_limssuper__init__)selfrrrr is_scalar batch_shape __class__s n/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/torch/distributions/continuous_bernoulli.pyr%zContinuousBernoulli.__init__7s TMv~ .M   "5'2I)%0MTZ(++G4::4::FJJL$%MNN$TZZ0DJ% %%"673I*62NT[$)$5djj4;; **,K++**,K  MBc|jt|}|j|_tj|}d|j vr1|j j||_|j |_d|j vr1|jj||_ |j|_tt|/|d|j|_ |S)NrrFr) _get_checked_instancerr#r r!__dict__rexpandrrr$r%_validate_args)r&r( _instancenewr)s r*r/zContinuousBernoulli.expandWs(()rr# ones_liker=s r* _cut_probszContinuousBernoulli._cut_probsmsC{{  ) ) + JJ JJqMEOODJJ7 7  r+c F|j}tjtj|d|tj|}tjtj |d|tj |}tjtjtj| tj|z tjtj|dtjd|ztjd|zdz z }tj|jdz d}tjddd|zz|zz}tj|j||S)zLcomputes the log normalizing constant as a function of the 'probs' parameter?g@?gUUUUUU?g'}'}@)rBr r@r; zeros_likegerAlogabslog1ppowrmathr>)r& cut_probscut_probs_below_halfcut_probs_above_halflog_normxtaylors r*_cont_bern_log_normz'ContinuousBernoulli._cont_bern_log_normts;OO% ${{ HHY $i1A1A)1L  %{{ HHY $i1K 99 IIekk9*- )0DD E KK HHY $ KK33 4 IIc0036 7   IIdjj3& *#)lQ.>">!!CC{{488:HfMMr+cD|j}|d|zdz z dtj| tj|z z z}|jdz }dddtj |dzz|zz}tj |j||S)NrErFrDgUUUUUU?gll?rG)rBr rLrJrrMr@r>)r&rOmusrSrTs r*meanzContinuousBernoulli.meansOO% 3?S01C KK #eii &: :5   JJ  K%))Aq/$AAQFF{{488:CHHr+c@tj|jSr4)r sqrtvariancer=s r*stddevzContinuousBernoulli.stddevszz$--((r+c|j}||dz ztjdd|zz dz dtjtj| tj|z dz z}tj|j dz d}ddd|zz |zz }tj |j||S)NrFrErGrDgUUUUUU?g?ggjV?)rBr rMrLrJrr@r>)r&rOvarsrSrTs r*r[zContinuousBernoulli.variancesOO% IO,uyy # / !10  %))EKK 3eii 6JJAN NO IIdjj3& *zMA,==BB{{488:D&IIr+c0t|jdSNT) is_binary)r rr=s r*rzContinuousBernoulli.logitsstzzT::r+cBtt|jdSr`)r r rr=s r*rzContinuousBernoulli.probss?4;;$GHHr+c6|jjSr4)rr"r=s r* param_shapezContinuousBernoulli.param_shapes{{!!r+c|j|}tj||jj|jj }tj 5|j|cdddS#1swYyxYwN)dtypedevice)_extended_shaper randrrgrhno_gradicdfr& sample_shapeshapeus r*samplezContinuousBernoulli.samplesa$$\2 JJuDJJ$4$4TZZ=N=N O ]]_ 99Q<   s &BB rnc|j|}tj||jj|jj }|j |Srf)rir rjrrgrhrlrms r*rsamplezContinuousBernoulli.rsamplesF$$\2 JJuDJJ$4$4TZZ=N=N Oyy|r+c|jr|j|t|j|\}}t ||d |j zS)Nnone) reduction)r0_validate_samplerrr rU)r&valuers r*log_probzContinuousBernoulli.log_probsR     ! !% (%dkk59  -fev N N&&( ) r+c |jr|j||j}tj||tjd|z d|z z|zdz d|zdz z }tj |j ||}tj tj|dtj|tj tj|dtj||S)NrFrEg) r0rwrBr rMr@r>r;rHrIrA)r&rxrOcdfsunbounded_cdfss r*cdfzContinuousBernoulli.cdfs     ! !% (OO% IIi '%))C)OS5[*Q Q  9_s " $ T%B%B%DdER{{ HHUC   U # KK,eooe.Dn U  r+c 4|j}tj|jtj| |d|zdz zztj| z tj |tj| z z |S)NrErF)rBr r@r>rLrJ)r&rxrOs r*rlzContinuousBernoulli.icdfsOO% {{  ) ) + YJ# /C2G)HHI++yj)*yy#ekk9*&==  ?   r+ctj|j }tj|j}|j||z z|j z |z Sr4)r rLrrJrXrU)r& log_probs0 log_probs1s r*entropyzContinuousBernoulli.entropysW[[$**- YYtzz* IIj0 1&&( )  r+c|jfSr4)rr=s r*_natural_paramsz#ContinuousBernoulli._natural_paramss ~r+ctjtj||jddz tj||jddz }tj |||jddz tj |z}tjtjtjj|tjtj|z }d|ztj|ddz ztj|ddz z }tj |||S)zLcomputes the log normalizing constant as a function of the natural parameterrrDr9rGg8@g@) r r:r;r#r<r@rArJrKspecialexpm1rM)r&rS out_unst_regcut_nat_paramsrRrTs r*_log_normalizerz#ContinuousBernoulli._log_normalizersyy HHQ 1 + ,ehhq$**Q-#:M.N  !djjmc1U__Q5GG 99 IIemm)).9 : IIeii/ 01q599Q?T11EIIaOf4LL{{<6::r+)NN)gV-?gx&1?Nr4),__name__ __module__ __qualname____doc__r unit_intervalrealrsupport_mean_carrier_measure has_rsamplerrrrtuplefloatboolr%r/r7r>rBrUpropertyrXr\r[r rrr r!rdrqrrsryr}rlrrr __classcell__)r)s@r*rrs4!, 9 9[EUEUVO''GK2626$2(, Cffn-.Cvv~./CE5L! C  ~ C  C@ 0  N(IfII)))J&JJ;;;IvII"UZZ""#-%**, -7EJJLEV     v ;r+)rNtypingrrr rtorch.distributionsrtorch.distributions.exp_familyrtorch.distributions.utilsrr r r r torch.nn.functionalr torch.typesrrr__all__rr+r*rsF " +<A.. ! !^;+^;r+