B
    ɒ\                 @   s4   d dl Z ddlmZ ddlmZ G dd deZdS )    N   )Distribution   )utilc                   sJ   e Zd Zd fdd	Zdd Zedd Zedd	 Zed
d Z  Z	S )CategoricalNc                s   |d k	r&t |}| dkr&td|d k	rLt |}| dkrLtdtjj||d}|j| _|j	| _
| jd| _t jdd| jd|d d S )	Nr   zprobs cannot be a scalar.zlogits cannot be a scalar.)probslogitsr   zCategorical(len_probs:{}))nameaddress_suffix
torch_dist)r   	to_tensordim
ValueErrortorchdistributionsr   r   _probsr   _logitssize_num_categoriessuper__init__format)selfr   r   r   )	__class__ d/global/project/projectdirs/dasrepo/etalumis/pyprob_master_mar20/pyprob/distributions/categorical.pyr      s    

zCategorical.__init__c             C   s   d | j| jS )Nz)Categorical(num_categories: {}, probs:{}))r   num_categoriesr   )r   r   r   r   __repr__   s    zCategorical.__repr__c             C   s   | j S )N)r   )r   r   r   r   r      s    zCategorical.num_categoriesc             C   s   | j S )N)r   )r   r   r   r   r      s    zCategorical.probsc             C   s   | j S )N)r   )r   r   r   r   r   "   s    zCategorical.logits)NN)
__name__
__module____qualname__r   r   propertyr   r   r   __classcell__r   r   )r   r   r      s
   r   )r    r   r   r   r   r   r   r   <module>   s   