ó
ßĆ÷Xc           @@  s  d  d l  m Z d  d l Z d d l m Z d d l m Z d   Z d   Z	 d   Z
 d	   Z d
   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z e Z Z e	 Z Z e
 Z Z e Z Z e Z Z e Z d   Z d d  Z! d   Z" d S(   i    (   t   absolute_importNi   (   t   backend(   t   deserialize_keras_objectc         C@  s    t  j t  j | |   d d S(   Nt   axisi˙˙˙˙(   t   Kt   meant   square(   t   y_truet   y_pred(    (    s+   /tmp/pip-build-X4mzal/keras/keras/losses.pyt   mean_squared_error   s    c         C@  s    t  j t  j | |   d d S(   NR   i˙˙˙˙(   R   R   t   abs(   R   R   (    (    s+   /tmp/pip-build-X4mzal/keras/keras/losses.pyt   mean_absolute_error   s    c         C@  sL   t  j |  | t  j t  j |   t  j   d    } d t  j | d d S(   Ng      Y@R   i˙˙˙˙(   R   R
   t   clipt   epsilont   NoneR   (   R   R   t   diff(    (    s+   /tmp/pip-build-X4mzal/keras/keras/losses.pyt   mean_absolute_percentage_error   s    	c         C@  sp   t  j t  j | t  j   d   d  } t  j t  j |  t  j   d   d  } t  j t  j | |  d d S(   Ng      đ?R   i˙˙˙˙(   R   t   logR   R   R   R   R   (   R   R   t	   first_logt
   second_log(    (    s+   /tmp/pip-build-X4mzal/keras/keras/losses.pyt   mean_squared_logarithmic_error   s    ((c         C@  s0   t  j t  j t  j d |  | d   d d S(   Ng      đ?g        R   i˙˙˙˙(   R   R   R   t   maximum(   R   R   (    (    s+   /tmp/pip-build-X4mzal/keras/keras/losses.pyt   squared_hinge   s    c         C@  s'   t  j t  j d |  | d  d d S(   Ng      đ?g        R   i˙˙˙˙(   R   R   R   (   R   R   (    (    s+   /tmp/pip-build-X4mzal/keras/keras/losses.pyt   hinge    s    c         C@  s   t  j | |   S(   N(   R   t   categorical_crossentropy(   R   R   (    (    s+   /tmp/pip-build-X4mzal/keras/keras/losses.pyR   $   s    c         C@  s   t  j | |   S(   N(   R   t   sparse_categorical_crossentropy(   R   R   (    (    s+   /tmp/pip-build-X4mzal/keras/keras/losses.pyR   (   s    c         C@  s   t  j t  j | |   d d S(   NR   i˙˙˙˙(   R   R   t   binary_crossentropy(   R   R   (    (    s+   /tmp/pip-build-X4mzal/keras/keras/losses.pyR   ,   s    c         C@  sZ   t  j |  t  j   d  }  t  j | t  j   d  } t  j |  t  j |  |  d d S(   Ni   R   i˙˙˙˙(   R   R   R   t   sumR   (   R   R   (    (    s+   /tmp/pip-build-X4mzal/keras/keras/losses.pyt   kullback_leibler_divergence0   s    c         C@  s.   t  j | |  t  j | t  j    d d S(   NR   i˙˙˙˙(   R   R   R   R   (   R   R   (    (    s+   /tmp/pip-build-X4mzal/keras/keras/losses.pyt   poisson6   s    c         C@  sB   t  j |  d d }  t  j | d d } t  j |  | d d S(   NR   i˙˙˙˙(   R   t   l2_normalizeR   (   R   R   (    (    s+   /tmp/pip-build-X4mzal/keras/keras/losses.pyt   cosine_proximity:   s    c         C@  s   |  j  S(   N(   t   __name__(   t   loss(    (    s+   /tmp/pip-build-X4mzal/keras/keras/losses.pyt	   serializeJ   s    c         C@  s   t  |  d t   d | d d S(   Nt   module_objectst   custom_objectst   printable_module_names   loss function(   R   t   globals(   t   nameR$   (    (    s+   /tmp/pip-build-X4mzal/keras/keras/losses.pyt   deserializeN   s    		c         C@  s[   |  d  k r d  St |  t j  r8 t |   }  t |   St |   rH |  St d |    d  S(   Ns-   Could not interpret loss function identifier:(   R   t
   isinstancet   sixt   string_typest   strR(   t   callablet
   ValueError(   t
   identifier(    (    s+   /tmp/pip-build-X4mzal/keras/keras/losses.pyt   getU   s    
(#   t
   __future__R    R*   t    R   R   t   utils.generic_utilsR   R	   R   R   R   R   R   R   R   R   R   R   R   t   mset   MSEt   maet   MAEt   mapet   MAPEt   mslet   MSLEt   kldt   KLDt   cosineR"   R   R(   R0   (    (    (    s+   /tmp/pip-build-X4mzal/keras/keras/losses.pyt   <module>   s0   												




	