L iddlmZmZddlZddlmZmZddlmZddlm Z ddl m Z m Z m Z mZddlmZddlmZmZd gZGd d e Zy) )OptionalUnionN)nanTensor) constraints)ExponentialFamily) broadcast_all lazy_propertylogits_to_probsprobs_to_logits) binary_cross_entropy_with_logits)_NumberNumber Bernoullic eZdZdZej ej dZejZ dZ dZ dde e eefde e eefde ed dffd Zdfd Zd Zed efd Zed efdZed efdZed efdZed efdZed ej8fdZej8fdZdZdZ ddZ!ed e"efdZ#dZ$xZ%S)ra Creates a Bernoulli distribution parameterized by :attr:`probs` or :attr:`logits` (but not both). Samples are binary (0 or 1). They take the value `1` with probability `p` and `0` with probability `1 - p`. Example:: >>> # xdoctest: +IGNORE_WANT("non-deterministic") >>> m = Bernoulli(torch.tensor([0.3])) >>> m.sample() # 30% chance 1; 70% chance 0 tensor([ 0.]) Args: probs (Number, Tensor): the probability of sampling `1` logits (Number, Tensor): the log-odds of sampling `1` validate_args (bool, optional): whether to validate arguments, None by default )probslogitsTrNrr validate_argsreturnc|du|duk(r td|#t|t}t|\|_n&|Jt|t}t|\|_| |jn |j |_|rtj}n|j j}t|-||y)Nz;Either `probs` or `logits` must be specified, but not both.r) ValueError isinstancerr rr_paramtorchSizesizesuper__init__)selfrrr is_scalar batch_shape __class__s c/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/torch/distributions/bernoulli.pyrzBernoulli.__init__/s TMv~ .M   "5'2I)%0MTZ% %%"673I*62NT[$)$5djj4;; **,K++**,K MBc|jt|}tj|}d|jvr1|j j ||_|j |_d|jvr1|jj ||_|j|_tt|+|d|j|_ |S)NrrFr) _get_checked_instancerrr__dict__rexpandrrrr_validate_args)r r" _instancenewr#s r$r)zBernoulli.expandGs((I>jj- dmm # ))+6CICJ t}} $++K8CJCJ i&{%&H!00 r%c:|jj|i|SN)rr,)r argskwargss r$_newzBernoulli._newTst{{///r%c|jSr.rr s r$meanzBernoulli.meanWs zzr%c|jdk\j|j}t||jdk(<|S)Ng?)rtor)r modes r$r8zBernoulli.mode[s7 c!%%djj1"%TZZ3  r%c:|jd|jz zS)Nr3r4s r$variancezBernoulli.varianceaszzQ^,,r%c0t|jdSNT) is_binary)r rr4s r$rzBernoulli.logitsestzzT::r%c0t|jdSr=)r rr4s r$rzBernoulli.probsist{{d;;r%c6|jjSr.)rrr4s r$ param_shapezBernoulli.param_shapems{{!!r%c|j|}tj5tj|jj |cdddS#1swYyxYwr.)_extended_shaperno_grad bernoullirr))r sample_shapeshapes r$samplezBernoulli.sampleqsK$$\2 ]]_ =??4::#4#4U#;< = = =s .AA'c|jr|j|t|j|\}}t ||d SNnone) reduction)r*_validate_sampler rr )r valuers r$log_probzBernoulli.log_probvs?     ! !% (%dkk59 0&QQQr%cFt|j|jdSrJ)r rrr4s r$entropyzBernoulli.entropy|s/ KKv  r%ctjd|jj|jj}|j ddt |jzz}|r|jd|jz}|S)N)dtypedevice))r:) rarangerrTrUviewlen _batch_shaper))r r)valuess r$enumerate_supportzBernoulli.enumerate_supportslat{{'8'8ASASTUTC0A0A,B%BBC ]]54+<+<#<=F r%cBtj|jfSr.)rlogitrr4s r$_natural_paramszBernoulli._natural_paramss DJJ'))r%cRtjtj|Sr.)rlog1pexp)r xs r$_log_normalizerzBernoulli._log_normalizers{{599Q<((r%)NNNr.)T)&__name__ __module__ __qualname____doc__r unit_intervalrealarg_constraintsbooleansupporthas_enumerate_support_mean_carrier_measurerrrrboolrr)r1propertyr5r8r;r rrrrrArHrOrQr\tupler_rd __classcell__)r#s@r$rrs(!, 9 9[EUEUVO!!G 2626(, Cffn-.Cvv~./C ~ C  C0 0ff -&--;;;r|s?" +< A' -x)!x)r%