ó
àÆ÷Xc           @` s“   d  d l  m Z m Z m Z d  d l Z d  d l Z d  d l m Z d  d l Z d  d l m	 Z	 m
 Z
 d  d l m Z d e j f d „  ƒ  YZ d S(   i    (   t   absolute_importt   print_functiont   divisionN(   t   integer_types(   t   tensort   function(   t   attrt   TestKeepDimsc           B` s/   e  Z d  „  Z e d ƒ d „  ƒ Z d „  Z RS(   c   
      C` s  | d  k r$ t t | j ƒ ƒ } n€ t | t ƒ ra | d k  rU | | j j g } q¤ | g } nC g  } x: | D]2 } | d k  r“ | | j j 7} n  | j | ƒ qn Wd } g  } xP t | j	 ƒ D]? \ } }	 | | k rè | j d ƒ qÀ | j | ƒ | d 7} qÀ Wt
 j | j j | ƒ | ƒ S(   Ni    t   xi   (   t   Nonet   listt   ranget   ndimt
   isinstanceR   t   typet   appendt	   enumeratet   shapeR   t
   DimShufflet   broadcastable(
   t   selfR   t   yt   axist   newaxist   at   it   new_dimst   jt   _(    (    sA   /tmp/pip-build-X4mzal/theano/theano/tensor/tests/test_keepdims.pyt   makeKeepDims_local   s&    t   slowc   	      C` sb  t  j ƒ  } t j j d d d ƒ } t j j d d d d ƒ } x­d d	 d d g d	 g d g d  d d	 d g d
 g d g d g d
 d d g d d
 d g d d d g g D]E} t  j	 } t
 | g | | d | d t ƒd |  j | | | d | d t ƒd | ƒ g d | ƒ} | | ƒ \ } } t j | | ƒ s8t ‚ | j | j k sPt ‚ t
 | g | | d | d t ƒd	 |  j | | | d | d t ƒd	 | ƒ g d | ƒ} | | ƒ \ } } t j | | ƒ sÓt ‚ | j | j k s¦ t ‚ q¦ Wxt  j t  j g D]þ } xõ d d	 d d g d	 g d g d  d d	 d g d
 g d g d g d
 d d g d d d g g D]™ } t
 | g | | d | d t ƒ|  j | | | d | d t ƒ| ƒ g d | ƒ} | | ƒ \ } } t j | | ƒ sät ‚ | j | j k sct ‚ qcWqWxWt  j t  j t  j t  j t  j t  j t  j t  j t  j g	 D]} xd d	 d d g d	 g d g d  d d	 g d	 d g d d	 d g d
 g d g d g d
 d g d
 d d g d d d g g D]™ } t
 | g | | d | d t ƒ|  j | | | d | d t ƒ| ƒ g d | ƒ} | | ƒ \ } } t j | | ƒ s>t ‚ | j | j k s½t ‚ q½WqAWd  S(   Ni   i   i   t	   optimizert   fast_compilet   linkert   pyi    i   iÿÿÿÿiþÿÿÿiýÿÿÿR   t   keepdimst   mode(   R   t   dtensor3t   numpyt   randomt   randt   theanot   compilet   ModeR	   t   max_and_argmaxR   t   TrueR   t   Falset   allcloset   AssertionErrorR   t   argmaxt   argmint   sumt   prodt   meant   vart   stdt   allt   anyt   maxt   min(	   R   R   R   R$   R   t   opt   ft   ans1t   ans2(    (    sA   /tmp/pip-build-X4mzal/theano/theano/tensor/tests/test_keepdims.pyt   test_keepdims)   s`    -*	"	"	-4	 !=	c   	      C` s  t  j ƒ  } t j j d d d ƒ j t j j ƒ } t j	 j
 d d d d ƒ } x»d d	 d d g d	 g d g d  d d	 g d	 d g d d	 d g d
 g d g d g d
 d g d
 d d g d d d g g D]D} t | g | j d d	 d | d t ƒ |  j | | j d d	 d | d t ƒ | ƒ g d | ƒ} | | ƒ \ } } t j | | ƒ sQt ‚ | j | j k sit ‚ t | g | j d d d | d t ƒ |  j | | j d d d | d t ƒ | ƒ g d | ƒ} | | ƒ \ } } t j | | ƒ sðt ‚ | j | j k sÄ t ‚ qÄ Wd  S(   Ni   i   i   R   R    R!   R"   i    i   iÿÿÿÿiþÿÿÿiýÿÿÿt   LR   R#   R$   (   R   R%   R&   R'   R(   t   astypeR)   t   configt   floatXR*   R+   R	   R   t   normR-   R   R.   R/   R0   R   (	   R   R   R   R$   R   R=   R>   R?   t   g(    (    sA   /tmp/pip-build-X4mzal/theano/theano/tensor/tests/test_keepdims.pyt	   test_normm   s$    '!=$0	$0	(   t   __name__t
   __module__R   R   R@   RG   (    (    (    sA   /tmp/pip-build-X4mzal/theano/theano/tensor/tests/test_keepdims.pyR      s   	D(   t
   __future__R    R   R   t   unittestR&   t   sixR   R)   R   R   t   theano.tests.unittest_toolsR   t   TestCaseR   (    (    (    sA   /tmp/pip-build-X4mzal/theano/theano/tensor/tests/test_keepdims.pyt   <module>   s   