ó
àÆ÷Xc           @` sS  d  d l  m Z m Z m Z d  d l m Z d  d l m Z d  d l m	 Z	 d  d l
 Z
 d  d l Z d  d l m Z d  d l m Z d  d l j j Z d  d l Z d  d l Z d  d l Z d  d l j Z d  d l m Z d  d	 l m Z m Z m Z m Z m  Z  m! Z! m" Z" d  d
 l m# Z# d e j$ f d „  ƒ  YZ% e& d k rOe j' ƒ  n  d S(   i    (   t   absolute_importt   print_functiont   division(   t   SkipTest(   t   parameterized(   t   productN(   t   reraise(   t   cPickle(   t   unittest_tools(   t   Poolt   pool_2dt   pool_3dt   MaxPoolGradt   AveragePoolGradt   max_pool_2d_same_sizet   DownsampleFactorMaxGradGrad(   t   functiont   TestDownsampleFactorMaxc           B` sD  e  Z d  „  Z e e d d „ ƒ Z e e d d „ ƒ Z e e d1 d2 d d „ ƒ Z	 e e d1 d1 d d „ ƒ Z
 e e d1 d d „ ƒ Z e e d1 d d „ ƒ Z d	 „  Z d
 „  Z d „  Z d „  Z d „  Z d „  Z d3 d4 d5 f d6 d7 d8 f d9 d: d; f d< d= d> f d? d@ dA f dB dC dD f dE dF dG f dH dI dJ f dK dL dM f dN dO dP f dQ dR dS f dT dU dV f dW dX dY f dZ d[ d\ f d] d^ d_ f d` da db f dc dd de f df dg dh f di dj dk f dl dm dn f do dp dq f dr ds dt f du dv dw f dx dy dz f d{ d| d} f f Z e j e e e e g d d d d g ƒ d e j ƒd „  ƒ Z d „  Z d  „  Z e j e e e e g ƒ d e j ƒd! „  ƒ Z e j e e e e g d d d g ƒ d e j ƒd" „  ƒ 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) d/ „  Z* d0 „  Z+ RS(~   c         C` sO   t  j d d ƒ d d d g k s' t ‚ t  j d	 d
 ƒ d d g k sK t ‚ d  S(   Ni	   i   i   i   i   i   (   i	   i   i   (   i   i   (   i   i   (   i   i   (   R	   t	   out_shapet   AssertionError(   t   self(    (    sD   /tmp/pip-build-X4mzal/theano/theano/tensor/signal/tests/test_pool.pyt   test_out_shape   s    't   maxc      	   C` sì  t  |  j ƒ d k  r1 t d t |  j ƒ ƒ ‚ n  d } d } | sŠ |  j d | d re | d 7} n  |  j d | d rŠ | d 7} qŠ n  t |  j d  ƒ } | j |  j d | d | ƒ | j |  j d | d | ƒ t j | ƒ } t j } | d k rt j	 } n | d k r%t j
 } n  xÀ t j |  j d  Œ  D]¨ }	 xŸ t | j d ƒ D]Š }
 |
 | d } xs t | j d ƒ D]^ } | | d } |  |	 | | | d … | | | d … f } | | ƒ | |	 |
 | f <q~WqVWq<W| S(	   s3   Helper function, implementing pool_2d in pure numpyi   s-   input should have at least 2 dim, shape is %si    iþÿÿÿi   iÿÿÿÿt   sumR   (   t   lent   shapet   NotImplementedErrort   strt   listt   appendt   numpyt   zerosR   R   t   averaget   ndindext   range(   t   inputt   wst   ignore_bordert   modet   xit   yit   out_shpt
   output_valt   funct   kt   it   iit   jt   jjt   patch(    (    sD   /tmp/pip-build-X4mzal/theano/theano/tensor/signal/tests/test_pool.pyt   numpy_max_pool_2d    s6      	0&c         ` sÎ  t  |  j ƒ t  ˆ ƒ k  rC t d t ˆ ƒ t |  j ƒ f ƒ ‚ n  t  ˆ ƒ } d g | } | s© xD t | ƒ D]3 } |  j | | ˆ | ro | | c d 7<qo qo Wn  t |  j |  ƒ } x= t | ƒ D]/ } | j |  j | | ˆ | | | ƒ qÊ Wt j | ƒ } t j	 }	 | d k r-t j
 }	 n | d k rEt j }	 n  x‚ t j |  j |  Œ  D]i }
 x` t j | j | Œ  D]G ‰  |  |
 t ‡  ‡ f d †  t | ƒ Dƒ ƒ } |	 | ƒ | |
 ˆ  <q{Wq]W| S(   s3   Helper function, implementing pool_nd in pure numpys.   input should have at least %s dim, shape is %si    i   R   R   c         3` s:   |  ]0 } t  ˆ  | ˆ | ˆ  | d  ˆ | ƒ Vq d S(   i   N(   t   slice(   t   .0R-   (   t   rR$   (    sD   /tmp/pip-build-X4mzal/theano/theano/tensor/signal/tests/test_pool.pys	   <genexpr>Z   s   (   R   R   R   R   R"   R   R   R   R   R   R   R    R!   t   tuple(   R#   R$   R%   R&   t   ndt   siR-   R)   R*   R+   t   lR1   (    (   R5   R$   sD   /tmp/pip-build-X4mzal/theano/theano/tensor/signal/tests/test_pool.pyt   numpy_max_pool_ndA   s0    "-	i    c         ` sº  | s t  ‚ | d ‰  | d ‰ |  j d } |  j d } | d ˆ  k sP t  ‚ | d ˆ k sf t  ‚ ‡  ‡ f d †  } | d ˆ  }	 | d ˆ }
 |	 | d | d d } |
 | d | d d } t |  j d  ƒ } | j | ƒ | j | ƒ | \ } } | \ } } t j | ƒ } | |  ƒ } t j } | d k rIt j } n | d k rat j } n  | d	 k } xFt j	 |  j d  Œ  D].} x%t
 | j d ƒ D]} | | d } t j | | d |	 ƒ } | sýt j | ˆ  ƒ } t j | | ˆ  ƒ } n  x® t
 | j d ƒ D]™ } | | d } t j | | d |
 ƒ } | spt j | ˆ ƒ } t j | | ˆ ƒ } n  | | | | … | | … f } | | ƒ | | | | f <qWqžWq„W| S(
   Ni    i   iþÿÿÿiÿÿÿÿc         ` s˜   t  j |  j d |  j d |  j d ˆ  d |  j d ˆ d f d |  j ƒ} |  | d  d  … d  d  … ˆ  |  j d ˆ  … ˆ |  j d ˆ … f <| S(   Ni    i   i   i   t   dtype(   R   R   R   R;   (   t   xt   y(   t   pad_ht   pad_w(    sD   /tmp/pip-build-X4mzal/theano/theano/tensor/signal/tests/test_pool.pyt   pad_imgj   s    *Di   R   R   t   average_inc_pad(   R   R   R   R   R   R   R   R   R    R!   R"   t   builtinst   min(   R<   R$   R%   t   stridet   padR&   t   ht   wR@   t   img_rowst   img_colst   out_rt   out_cR)   t   ws0t   ws1t   stride0t   stride1R*   R=   R+   t   inc_padR,   R-   t	   ii_stridet   ii_endR/   t	   jj_stridet   jj_endR1   (    (   R>   R?   sD   /tmp/pip-build-X4mzal/theano/theano/tensor/signal/tests/test_pool.pyt   numpy_max_pool_2d_stride_pad_   sR    

	 &c         ` s½  | s t  ‚ t ˆ ƒ ‰  ˆ d  k r1 d	 ˆ  ‰ n  | d  k rJ d
 ˆ  } n  t ˆ ƒ t ˆ ƒ k os t | ƒ k n s~ t  ‚ t ‡ ‡ f d †  t ˆ  ƒ Dƒ ƒ s© t  ‚ ‡  ‡ f d †  } t |  j ˆ   ƒ } t |  j ˆ   ƒ } x` t ˆ  ƒ D]R }	 |  j ˆ  |	 d ˆ |	 }
 | j |
 ƒ | j |
 ˆ |	 | |	 d ƒ qð Wt j	 | ƒ } | |  ƒ } t j
 } | d k r‚t j } n | d k ršt j } n  | d k } xt j |  j ˆ   Œ  D]÷ } xî t j | j ˆ  Œ  D]Õ } g  } x¤ t ˆ  ƒ D]– }	 | |	 | |	 } t j | ˆ |	 | ˆ  |	 ƒ } | sut j
 | ˆ |	 ƒ } t j | |  j ˆ  |	 ˆ |	 ƒ } n  | j t | | ƒ ƒ qõW| | | } | | ƒ | | | <qÜWq¾W| S(   Ni    c         3` s#   |  ] } ˆ | ˆ  | k Vq d  S(   N(    (   R4   R-   (   RE   R$   (    sD   /tmp/pip-build-X4mzal/theano/theano/tensor/signal/tests/test_pool.pys	   <genexpr>Ÿ   s    c         ` s   t  j ˆ  j d ˆ !t ‡ ‡ ‡  f d †  t ˆ ƒ Dƒ ƒ d ˆ  j ƒ} t d  ƒ f t ˆ  j ƒ ˆ t ‡ ‡ ‡  f d †  t ˆ ƒ Dƒ ƒ } ˆ  | | <| S(   Ni    c         3` s-   |  ]# } ˆ j  ˆ  | ˆ | d  Vq d S(   i   N(   R   (   R4   R-   (   R7   RE   R<   (    sD   /tmp/pip-build-X4mzal/theano/theano/tensor/signal/tests/test_pool.pys	   <genexpr>¥   s    R;   c         3` s6   |  ], } t  ˆ | ˆ j ˆ  | ˆ | ƒ Vq d  S(   N(   R3   R   (   R4   R-   (   R7   RE   R<   (    sD   /tmp/pip-build-X4mzal/theano/theano/tensor/signal/tests/test_pool.pys	   <genexpr>©   s   (	   R   R   R   R6   R"   R;   R3   t   NoneR   (   R<   R=   t   block(   R7   RE   (   R<   sD   /tmp/pip-build-X4mzal/theano/theano/tensor/signal/tests/test_pool.pyR@   ¡   s    )
i   i   R   R   RA   (   i    (   i    (   R   R   RV   t   allR"   R   R   R   R   R   R   R   R    R!   RB   RC   R3   (   R#   R$   R%   RD   RE   R&   R@   t   pad_img_shpR)   R-   t   padded_sizeR*   t   padded_inputR+   RP   R9   R5   t   regiont   r_stridet   r_endR1   (    (   R7   RE   R$   sD   /tmp/pip-build-X4mzal/theano/theano/tensor/signal/tests/test_pool.pyt   numpy_max_pool_nd_stride_pad•   sH    4+%	#)c         C` s+  t  |  j ƒ d k  r1 t d t |  j ƒ ƒ ‚ n  | d	 k rF | } n  |  j d } |  j d } d } d } | | d d k r | | d | d d } n  | | d d k rÎ | | d | d d } n  | sË| d k r5| | d | d | d d k rN| | | d }	 |	 d k r2| d 7} q2qNn | d k rN| d 7} n  | d k r¯| | d | d | d d k rÈ| | | d }
 |
 d k r¬| d 7} q¬qÈqË| d k rË| d 7} qËn  t |  j d  ƒ } | j | ƒ | j | ƒ t j } | d k rt j	 } n | d k r1t j
 } n  t j | ƒ } xä t j |  j d  Œ  D]Ì } xÃ t | j d ƒ D]® } | | d } t j | | d | ƒ } x} t | j d ƒ D]h } | | d } t j | | d | ƒ } |  | | | … | | … f } | | ƒ | | | | f <q³WqqWqWW| S(
   sÁ   Helper function, implementing pool_2d in pure numpy
           this function provides stride input to indicate the stide size
           for the pooling regions. if not indicated, stride == ws.i   s-   input should have at least 2 dim, shape is %siþÿÿÿiÿÿÿÿi    i   R   R   N(   R   R   R   R   RV   R   R   R   R   R   R    R   R!   R"   RB   RC   (   R#   R$   R%   RD   R&   RH   RI   RJ   RK   t   rrt   crR)   R+   R*   R,   R-   RQ   RR   R/   RS   RT   R1   (    (    sD   /tmp/pip-build-X4mzal/theano/theano/tensor/signal/tests/test_pool.pyt   numpy_max_pool_2d_strideË   s^    	$$	 &c         C` s„  t  | ƒ } | d k r! | } n  t  | ƒ t  | ƒ k s? t ‚ t |  j |  ƒ } xt | ƒ D]} d } |  j | | | | d k rµ |  j | | | | | | d } n  | sV| d k r.|  j | | | d | | | | d k rS|  j | | | | | d k r+| d 7} q+qSqV|  j | | d k rV| d 7} qVn  | j | ƒ q` Wt j }	 | d k rˆt j	 }	 n | d k r t j
 }	 n  t j | ƒ }
 xÎ t j |  j |  Œ  D]µ } x¬ t j |
 j | Œ  D]“ } g  } xb t | ƒ D]T } | | | | } t j | | | |  j | | ƒ } | j t | | ƒ ƒ qþW|  | | } |	 | ƒ |
 | | <qåWqÇW|
 S(   sÁ   Helper function, implementing pooling in pure numpy
           this function provides stride input to indicate the stide size
           for the pooling regions. if not indicated, stride == ws.i    i   R   R   N(   R   RV   R   R   R   R"   R   R   R   R   R    R   R!   RB   RC   R3   (   R#   R$   R%   RD   R&   R7   R)   R-   t   outR+   R*   R9   R5   R\   R]   R^   R1   (    (    sD   /tmp/pip-build-X4mzal/theano/theano/tensor/signal/tests/test_pool.pyt   numpy_max_pool_nd_stride
  sB    	 )0$	&c         C` sG  t  j j t j ƒ  ƒ } d d f d d f d d f d d f d d f d d f d d f d d f d d  f d! d" f d# d$ f f } x¿t | t t g d d	 d
 d g ƒ D]™\ } } } | \ } } | j | Œ  } t	 j
 | ƒ }	 |  j | | | d | ƒ}
 t | ƒ d k rRt |	 | | d | ƒ} t g  | g ƒ } | ƒ  } t j | |
 ƒ nX t | ƒ d k rªt |	 | | d | ƒ} t g  | g ƒ } | ƒ  } t j | |
 ƒ n  t d t | ƒ d | d | ƒ |	 | ƒ } t j | j | d t | ƒ d | ƒ} t j t  j | ƒ |
 j ƒ t g  | ƒ } | ƒ  } t j | |
 ƒ q¦ Wd  S(%   Ni   i   i   i   i   i   i   R   R   RA   t   average_exc_padR&   t   ndimR%   (   i   (   i   (   i   (   i   i   (   i   (   i   i   i   (   i   i   (   i   i   i   i   (   i   i   (   i   i   i   i   (   i   i   (   i   i   i   i   (   i   i   (   i   i   i   i   (   i   i   i   (   i   i   i   i   i   (   i   i   i   (   i   i   i   i   i   (   i   i   i   (   i   i   i   i   i   (   i   i   i   i   (   i   i   i   i   i   i   (   R   t   randomt   RandomStatet   uttt
   fetch_seedR   t   Truet   Falset   randt   theanot   sharedR:   R   R
   R   t   assert_allcloseR   R	   R   R   t   asarray(   R   t   rngt   examplest   exampleR%   R&   t
   maxpoolshpt	   inputsizet   imvalt   imagest   numpy_output_valt   outputt   fR*   t
   maxpool_opt   output_shape(    (    sD   /tmp/pip-build-X4mzal/theano/theano/tensor/signal/tests/test_pool.pyt   test_DownsampleFactorMax6  s\    																			c      %   C` s#  t  j j t j ƒ  ƒ } d d t d d f d d t d d f d d t d d f d  d! t d" d# f d$ d% t d& d' f d( d) t d* d+ f d, d- t d. d/ f d0 d1 t d2 d3 f d4 d5 t d6 d7 f d8 d9 t d: d; f d< d= t d> d? f d@ dA t dB dC f dD dE t dF dG f dH dI t dJ dK f dL dM t dN dO f dP dQ t dR dS f dT dU t dV dW f dX dY t dZ d[ f d\ d] t d^ d_ f d` da t db dc f dd de t df dg f dh di t dj dk f dl dm t dn do f dp dq t dr ds f dt du t dv dw f dx dy t dz d{ f d| d} t d~ d f d€ d t d‚ dƒ f d„ d… t d† d‡ f f } xô t | d d d d g ƒ D]× \ } } | \ } } } } }	 | j | Œ  }
 t	 j
 |
 ƒ } |  j |
 | | | | ƒ } | j |	 k sÆt d |	 | j f ƒ ‚ t d t | ƒ d | d | ƒ | | | ƒ } t g  | ƒ } | ƒ  } t j | | ƒ qDWd  S(ˆ   Ni   i   i
   i   i   i   i   i   i   i   i   R   R   RA   Re   s&   outshape is %s, calculated shape is %sRf   R%   R&   (   i   i   (   i   i   (   i   i
   i   i   (   i   i
   i   i   (   i   i   (   i   i   (   i   i
   i   i   (   i   i
   i   i   (   i   i   (   i   i   (   i   i
   i   i   (   i   i
   i   i   (   i   i   (   i   i   (   i   i
   i   i   (   i   i
   i   i   (   i   i   (   i   i   (   i   i
   i   i   (   i   i
   i   i   (   i   i   (   i   i   (   i   i
   i   i   (   i   i
   i   i   (   i   i   (   i   i   (   i   i
   i   i   (   i   i
   i   i   (   i   i   (   i   i   (   i   i
   i   i   (   i   i
   i   i   (   i   i   (   i   i   (   i   i
   i   i   (   i   i
   i   i   (   i   i   (   i   i   (   i   i
   i   i   (   i   i
   i   i   (   i   i   (   i   i   (   i   i
   i   i   (   i   i
   i   i   (   i   i   (   i   i   (   i   i
   i   i   (   i   i
   i   i   (   i   i   (   i   i   (   i   i
   i   i   (   i   i
   i   i   (   i   i   (   i   i   (   i   i
   i   i   (   i   i
   i   i   (   i   i   (   i   i   (   i   i
   i   i   (   i   i
   i   i   (   i   i   (   i   i   (   i   i
   i   i   (   i   i
   i   i   (   i   i   (   i   i   (   i   i
   i   i   (   i   i
   i   i   (   i   i   (   i   i   (   i   i
   i   i   (   i   i
   i   i   (   i   i   (   i   i   (   i   i
   i   i   (   i   i
   i   i   (   i   i   (   i   i   (   i   i
   i   i   (   i   i
   i   i   (   i   i   (   i   i   (   i   i
   i   i   (   i   i
   i   i   (   i   i   (   i   i   (   i   i
   i   i   (   i   i
   i   i   (   i   i   (   i   i   (   i   i
   i   i   (   i   i
   i   i   (   i   i   (   i   i   (   i   i
   i   i   (   i   i
   i   i   (   i   (   i   (   i   (   i   (   i   (   i   (   i   i   (   i   i   (   i   (   i   (   i   i   i   (   i   i   i   (   i   i   i   (   i   i   i   (   i   i   i   i   (   i   i   i   i   (   i   i   i   (   i   i   i   (   i   i   i   i   i   (   i   i   i   i   i   (   R   Rg   Rh   Ri   Rj   Rk   Rl   R   Rm   Rn   Ro   Rd   R   R   R	   R   R   Rp   (   R   Rr   Rs   Rt   R&   Ru   RD   R%   t   inputshpt	   outputshpRw   Rx   Ry   R|   R{   R*   (    (    sD   /tmp/pip-build-X4mzal/theano/theano/tensor/signal/tests/test_pool.pyt   test_DownsampleFactorMaxStrideq  sb    		c         C` sþ  t  j j t j ƒ  ƒ } d d d d d d d f } d d d d d  d! d" f } d# d$ d% d& d' d( d) f } d* d+ d, d- d. d/ d0 d1 d2 d3 d4 d5 d6 d7 f } t j ƒ  } xRt  j t | ƒ ƒ D];} | | } | j	 d d | d | d ƒ }	 | | }
 | | } xô t
 t t g d d d d g ƒ D]Ñ \ } } | d } | sJ| d 7} n  | | } |  j |	 | | |
 | ƒ } | j | k s—t d | | j f ƒ ‚ t d | d t | ƒ d | ƒ | | |
 ƒ } t | g | ƒ } | |	 ƒ } t j | | ƒ q!Wq» Wd  S(8   Ni   i   i   i   i	   i
   i   i   i   i   i   i    R   R   RA   Re   s&   outshape is %s, calculated shape is %sR%   Rf   R&   (   i   i   (   i   i   (   i   i   (   i   i   (   i   i   (   i   i   (   i	   i	   (   i   i   (   i   i   (   i
   i   (   i   i   (   i   i   (   i
   i
   (   i   i   (   i   i   (   i   i   (   i   i   (   i   i   (   i   i   (   i   i   (   i   i   (   i   i
   i   i   (   i   i
   i   i   (   i   i
   i   i   (   i   i
   i   i   (   i   i
   i   i   (   i   i
   i   i   (   i   i
   i   i   (   i   i
   i   i   (   i   i
   i   i   (   i   i
   i   i   (   i   i
   i   i    (   i   i
   i   i   (   i   i
   i    i    (   i   i
   i   i   (   R   Rg   Rh   Ri   Rj   t   tensort   dtensor4t   arangeR   Rm   R   Rk   Rl   Rb   R   R   R	   R   Rp   (   R   Rr   t   maxpoolshpst   stridesizest   imvsizst
   outputshpsRx   t   indxt   imvsizeRw   RD   Ru   R%   R&   t   indx_outR€   Ry   R|   R{   R*   (    (    sD   /tmp/pip-build-X4mzal/theano/theano/tensor/signal/tests/test_pool.pyt#   test_DownsampleFactorMaxStrideExtra¬  sH    				
 



c         C` s£  t  } t j j t j ƒ  ƒ } d d d d f d d d d f d d d d f d d d d f d  d! d" d# f d$ d% d& d' f d( d) d* d+ f d, d- d. d/ f d0 d1 d2 d3 f d4 d5 d6 d7 f d8 d9 d: d; f f } xÓ t | d d	 d
 d g ƒ D]¶ \ } } | \ } } } }	 | j |	 Œ  d }
 t j	 |
 ƒ } |  j
 |
 | | | | | ƒ } t d t | ƒ d | d | ƒ | | | | ƒ } t g  | ƒ } | ƒ  } t j | | ƒ qå Wd  S(<   Ni   i   i   i   i   i   i    R   R   RA   Re   g      à?Rf   R%   R&   (   i   (   i   (   i   (   i   (   i   (   i   (   i   (   i   i   (   i   (   i   (   i   (   i   i   i   (   i   (   i   (   i   (   i   i   i   i   (   i   i   (   i   i   (   i   i   (   i   i   i   i   (   i   i   (   i   i   (   i   i   (   i   i   i   i   (   i   i   (   i   i   (   i   i   (   i   i   i   i   (   i   i   (   i   i   (   i    i    (   i   i   i   i   (   i   i   (   i   i   (   i   i   (   i   i   i   i   (   i   i   i   (   i   i   i   (   i    i   i   (   i   i   i   i   (   i   i   i   (   i   i   i   (   i    i   i   (   i   i   i   i   i   (   Rk   R   Rg   Rh   Ri   Rj   R   Rm   Rn   Ro   R_   R	   R   R   Rp   (   R   R%   Rr   Rs   Rt   R&   Ru   t
   stridesizet   padsizeRv   Rw   Rx   Ry   R|   R{   R*   (    (    sD   /tmp/pip-build-X4mzal/theano/theano/tensor/signal/tests/test_pool.pyt%   test_DownsampleFactorMaxPaddingStrideÕ  s<    				c         ` s	  t  j j t j ƒ  ƒ } d d d d f d d d d f d d d d f d d d d f d d d d f d d  d! d" f d# d$ d% d& f f } x{ d d g D]m ‰ xd | D]\ } | \ ‰  ‰ ‰ } | j | Œ  d } ‡  ‡ ‡ ‡ f d	 †  } t j | | g d
 | ƒq¡ Wq” Wd  S('   Ni
   i   i   i   i   R   R   g      $@c         ` s.   t  d t ˆ  ƒ d t d ˆ ƒ |  ˆ  ˆ ˆ ƒ S(   NRf   R%   R&   (   R	   R   Rk   (   R#   (   Ru   R&   RŽ   R   (    sD   /tmp/pip-build-X4mzal/theano/theano/tensor/signal/tests/test_pool.pyt   mp  s
    Rr   (   i
   (   i   (   i   (   i   (   i
   (   i   (   i   (   i   i   (   i
   (   i   (   i   (   i   i   i   (   i
   i
   (   i   i   (   i   i   (   i   i   i   i   (   i
   i   (   i   i   (   i   i   (   i   i   i   i   (   i   i   (   i   i   (   i   i   (   i   i   i   i   (   i   i   i   (   i   i   i   (   i   i   i   (   i   i   i   i   i   (   R   Rg   Rh   Ri   Rj   Rm   t   verify_grad(   R   Rr   Rs   Rt   Rv   Rw   R   (    (   Ru   R&   RŽ   R   sD   /tmp/pip-build-X4mzal/theano/theano/tensor/signal/tests/test_pool.pyt*   test_DownsampleFactorMaxPaddingStride_gradù  s    c         ` s  t  j j t j ƒ  ƒ } d d f d d f d d f d d f d d f d d f d d f d d f d d f d d f f
 } x‚ t | t t g d d d d g ƒ D]\ \ } ‰  ‰ | \ ‰ } | j | Œ  d	 } ‡  ‡ ‡ f d
 †  } t j	 | | g d | ƒq Wd  S(    Ni   i   i   i   R   R   RA   Re   g      $@c         ` s(   t  d t ˆ ƒ d ˆ  d ˆ ƒ |  ˆ ƒ S(   NRf   R%   R&   (   R	   R   (   R#   (   R%   Ru   R&   (    sD   /tmp/pip-build-X4mzal/theano/theano/tensor/signal/tests/test_pool.pyR   .  s    Rr   (   i   (   i   (   i   (   i   i   (   i   (   i   i   i   (   i   i   (   i   i   i   i   (   i   i   (   i   i   i   i   (   i   i   (   i   i   i   i   (   i   i   i   (   i   i   i   (   i   i   i   (   i   i   i   i   (   i   i   i   (   i   i   i   i   i   (   i   i   i   (   i   i   i   i   i   (
   R   Rg   Rh   Ri   Rj   R   Rk   Rl   Rm   R‘   (   R   Rr   Rs   Rt   Rv   Rw   R   (    (   R%   Ru   R&   sD   /tmp/pip-build-X4mzal/theano/theano/tensor/signal/tests/test_pool.pyt   test_DownsampleFactorMax_grad  s*    											i   i   i   i   i   i   i   i
   i   i   i	   R   RA   Re   t   testcase_func_namec         ` sk   t  j j t j ƒ  ƒ } | \ ‰ ‰ } | j | Œ  } ‡  ‡ ‡ ‡ f d †  } t j | | g d | ƒd  S(   Nc         ` s+   t  d t ˆ ƒ d ˆ  d ˆ ƒ |  ˆ ˆ ƒ S(   NRf   R%   R&   (   R	   R   (   R#   (   R%   Ru   R&   R   (    sD   /tmp/pip-build-X4mzal/theano/theano/tensor/signal/tests/test_pool.pyR   _  s    Rr   (   R   Rg   Rh   Ri   Rj   Rm   R‘   (   R   Rt   R%   R&   Rr   Rv   Rw   R   (    (   R%   Ru   R&   R   sD   /tmp/pip-build-X4mzal/theano/theano/tensor/signal/tests/test_pool.pyt$   test_DownsampleFactorMax_grad_strideQ  s
    	c         ` s%  t  j j t j ƒ  ƒ } d
 d f d d f d d f d d f d d f d d f d d f d d f d d f d d f f
 } x¦ | D]ž \ ‰ } | j | Œ  d } x| t t g D]n ‰  t j	 | j
 ˆ d t ˆ ƒ d ˆ  ƒ} | j | Œ  d } ‡  ‡ f d †  } t j | | | g d	 | ƒq« Wq Wd  S(   Ni   i   i   i   g      $@Rf   R%   c         ` sR   t  d t ˆ ƒ d ˆ  ƒ |  ˆ ƒ } t d t ˆ ƒ d ˆ  ƒ } | |  | | ˆ ƒ S(   NRf   R%   (   R	   R   R   (   R#   t   gradRc   t   grad_op(   R%   Ru   (    sD   /tmp/pip-build-X4mzal/theano/theano/tensor/signal/tests/test_pool.pyR   €  s    	Rr   (   i   (   i   (   i   (   i   i   (   i   i   (   i   i   i   i   (   i   i   (   i   i   i   i   (   i   i   (   i   i   i   i   (   i   i   i   (   i   i   i   i   (   i   i   i   (   i   i   i   i   (   i   i   i   (   i   i   i   i   (   i   i   i   (   i   i   i   i   (   i   i   i   (   i   i   i   i   i   (   R   Rg   Rh   Ri   Rj   Rm   Rk   Rl   R	   R   R   R   R‘   (   R   Rr   Rs   Rv   Rw   t
   grad_shapet   grad_valR   (    (   R%   Ru   sD   /tmp/pip-build-X4mzal/theano/theano/tensor/signal/tests/test_pool.pyt!   test_DownsampleFactorMaxGrad_grade  s&    									!	c         ` sB  t  j j t j ƒ  ƒ } d d f d d f d d f d d f d d f d d f d d f d d f d d f d d  f f
 } xÃ | D]» \ ‰  } | j | Œ  d } x™ t t g D]‹ ‰ x‚ d d d g D]q ‰ t j	 | j
 ˆ  d	 t ˆ  ƒ d
 ˆ ƒ} | j | Œ  d } ‡  ‡ ‡ f d †  } t j | | | g d | ƒqÁ Wq« Wq Wd  S(!   Ni   i   i   i   g      $@R   RA   Re   Rf   R%   c         ` s1   t  d t ˆ  ƒ d ˆ d ˆ ƒ } | |  | ˆ  ƒ S(   NRf   R%   R&   (   R   R   (   R#   R–   R—   (   t
   avgpoolshpR%   R&   (    sD   /tmp/pip-build-X4mzal/theano/theano/tensor/signal/tests/test_pool.pyR   ¨  s    Rr   (   i   (   i   (   i   (   i   i   (   i   i   (   i   i   i   i   (   i   i   (   i   i   i   i   (   i   i   (   i   i   i   i   (   i   i   i   (   i   i   i   i   (   i   i   i   (   i   i   i   i   (   i   i   i   (   i   i   i   i   (   i   i   i   (   i   i   i   i   (   i   i   i   (   i   i   i   i   i   (   R   Rg   Rh   Ri   Rj   Rm   Rk   Rl   R	   R   R   R   R‘   (   R   Rr   Rs   Rv   Rw   R˜   R™   R   (    (   R›   R%   R&   sD   /tmp/pip-build-X4mzal/theano/theano/tensor/signal/tests/test_pool.pyt   test_AveragePoolGrad_grad‹  s*    										c      	   ` s¯   t  j j t j ƒ  ƒ ‰ | \ ‰ ‰ } ˆ j | Œ  ‰ t j ˆ j ˆ d t	 ˆ ƒ d ˆ d ˆ ƒ} t  j
 | ƒ d k r« ˆ j | Œ  ‰  ‡  ‡ ‡ ‡ ‡ ‡ ‡ f d †  ‰ n  d  S(   NRf   R%   RD   i    c         ` st   t  d t ˆ ƒ d ˆ ƒ |  ˆ ˆ ƒ } t d t ˆ ƒ d ˆ ƒ } | |  | | ˆ ˆ ƒ St j ˆ ˆ ˆ  g d ˆ ƒ(   NRf   R%   Rr   (   R	   R   R   Ri   R‘   (   R#   R–   Rc   R—   (   R™   R%   Rw   Ru   R   Rr   RD   (    sD   /tmp/pip-build-X4mzal/theano/theano/tensor/signal/tests/test_pool.pyR   Á  s    	(   R   Rg   Rh   Ri   Rj   Rm   R	   R   R   R   t   prod(   R   Rt   R%   Rv   R˜   (    (   R™   R%   Rw   Ru   R   Rr   RD   sD   /tmp/pip-build-X4mzal/theano/theano/tensor/signal/tests/test_pool.pyt(   test_DownsampleFactorMaxGrad_grad_stride°  s    c   
   	   ` sÂ   t  j j t j ƒ  ƒ } | \ ‰  ‰ } | j | Œ  } t j | j ˆ  d t	 ˆ  ƒ d ˆ d ˆ ƒ} t  j
 | ƒ d k r¾ | j | Œ  } ‡  ‡ ‡ ‡ f d †  }	 t j |	 | | g d | ƒn  d  S(   NRf   R%   RD   i    c         ` s4   t  d t ˆ  ƒ d ˆ d ˆ ƒ } | |  | ˆ  ˆ ƒ S(   NRf   R%   R&   (   R   R   (   R#   R–   R—   (   R›   R%   R&   RD   (    sD   /tmp/pip-build-X4mzal/theano/theano/tensor/signal/tests/test_pool.pyR   á  s
    	Rr   (   R   Rg   Rh   Ri   Rj   Rm   R	   R   R   R   R   R‘   (
   R   Rt   R%   R&   Rr   Rv   Rw   R˜   R™   R   (    (   R›   R%   R&   RD   sD   /tmp/pip-build-X4mzal/theano/theano/tensor/signal/tests/test_pool.pyt    test_AveragePoolGrad_grad_strideÌ  s    	c         ` s_  t  j j t j ƒ  ƒ } d d d d f d d d d f d d d d f d d d d f d d d d  f d! d" d# d$ f d% d& d' d( f d) d* d+ d, f d- d. d/ d0 f d1 d2 d3 d4 f f
 } x¤ | D]œ \ ‰  ‰ ‰ } | j | Œ  d } t j | j ˆ  d t	 ˆ  ƒ d ˆ d	 t
 d
 ˆ ƒ} | j | Œ  d } ‡  ‡ ‡ f d †  } t j | | | g d | ƒq» Wd  S(5   Ni   i   i
   i   i   g      $@Rf   RD   R%   RE   c         ` s^   t  d t ˆ  ƒ d t ƒ |  ˆ  ˆ ˆ ƒ } t d t ˆ  ƒ d t ƒ } | |  | | ˆ  ˆ ˆ ƒ S(   NRf   R%   (   R	   R   Rk   R   (   R#   R–   Rc   R—   (   Ru   RŽ   R   (    sD   /tmp/pip-build-X4mzal/theano/theano/tensor/signal/tests/test_pool.pyR     s    	Rr   (   i   (   i   (   i   (   i
   (   i   (   i   (   i   (   i   i
   (   i   (   i   (   i   (   i   i   i
   (   i   i   (   i   i   (   i   i   (   i   i   i
   i
   (   i   i   (   i   i   (   i   i   (   i   i   i
   i
   (   i   i   (   i   i   (   i   i   (   i   i   i
   i   (   i   i   (   i   i   (   i   i   (   i   i   i   i   (   i   i   i   (   i   i   i   (   i   i   i   (   i   i   i
   i   i   (   i   i   i   (   i   i   i   (   i   i   i   (   i   i   i   i
   i   (   i   i   i   (   i   i   i   (   i   i   i   (   i   i   i   i   i
   (   R   Rg   Rh   Ri   Rj   Rm   R	   R   R   R   Rk   R‘   (   R   Rr   Rs   Rv   Rw   R˜   R™   R   (    (   Ru   RŽ   R   sD   /tmp/pip-build-X4mzal/theano/theano/tensor/signal/tests/test_pool.pyt/   test_DownsampleFactorMaxPaddingStride_grad_gradê  s,    	c         ` sy  t  j j t j ƒ  ƒ } d d d d f d d d d f d d d d f d d d d f d d  d! d" f d# d$ d% d& f d' d( d) d* f d+ d, d- d. f d/ d0 d1 d2 f d3 d4 d5 d6 f f
 } x¾ | D]¶ \ ‰  ‰ ‰ } | j | Œ  d } xŽ d d g D]€ ‰ t j | j ˆ  d	 t	 ˆ  ƒ d
 ˆ d t
 d ˆ ƒ} | j | Œ  d } ‡  ‡ ‡ ‡ f d †  } t j | | | g d | ƒqí Wq» Wd  S(7   Ni   i   i
   i   i   g      $@R   RA   Rf   RD   R%   RE   c         ` s7   t  d t ˆ  ƒ d t d ˆ ƒ } | |  | ˆ  ˆ ˆ ƒ S(   NRf   R%   R&   (   R   R   Rk   (   R#   R–   R—   (   R›   R&   RŽ   R   (    sD   /tmp/pip-build-X4mzal/theano/theano/tensor/signal/tests/test_pool.pyR   ,  s    	Rr   (   i   (   i   (   i   (   i
   (   i   (   i   (   i   (   i   i
   (   i   (   i   (   i   (   i   i   i
   (   i   i   (   i   i   (   i   i   (   i   i   i
   i
   (   i   i   (   i   i   (   i   i   (   i   i   i
   i
   (   i   i   (   i   i   (   i   i   (   i   i   i
   i   (   i   i   (   i   i   (   i   i   (   i   i   i   i   (   i   i   i   (   i   i   i   (   i   i   i   (   i   i   i
   i   i   (   i   i   i   (   i   i   i   (   i   i   i   (   i   i   i   i
   i   (   i   i   i   (   i   i   i   (   i   i   i   (   i   i   i   i   i
   (   R   Rg   Rh   Ri   Rj   Rm   R	   R   R   R   Rk   R‘   (   R   Rr   Rs   Rv   Rw   R˜   R™   R   (    (   R›   R&   RŽ   R   sD   /tmp/pip-build-X4mzal/theano/theano/tensor/signal/tests/test_pool.pyt'   test_AveragePoolPaddingStride_grad_grad  s.    	c         C` sÖ   t  j d ƒ } t  j | j d d ƒ | j d d ƒ ƒ } t d | d d d t ƒ } t  j t  j | ƒ ƒ } t  j d | d | ƒ } t	 d	 | g d
 | ƒ } t
 j | d d g ƒ d d g d d g g ƒ sÒ t ‚ d  S(   NR<   i    R#   R$   i   R%   t   costt   wrtt   inputst   outputsi   g        g¿œ3"¶Ž@(   i   i   (   R‚   t   vectort   dott
   dimshuffleR
   Rk   t   expR   t   hessianR   R   t   allcloseR   (   R   t   x_vect   zR=   t   Ct	   grad_hesst   fn_hess(    (    sD   /tmp/pip-build-X4mzal/theano/theano/tensor/signal/tests/test_pool.pyt    test_DownsampleFactorMax_hessian3  s    c         ` s,  t  j j t j ƒ  ƒ } d	 d
 d d f d d d d f d d d d f d d d d f d d d d f d d d d  f d! d" d# d$ f d% d& d' d( f d) d* d+ d, f d- d. d/ d0 f f
 } xq | D]i \ ‰  ‰ ‰ } | j | Œ  d } | j | Œ  d } ‡  ‡ ‡ f d †  } t j | | | g d | ƒq» Wd  S(1   Ni   i   i
   i   i   g      $@c         ` sj   t  d t ˆ  ƒ d t ƒ } | |  ˆ  ˆ ˆ ƒ } t d t ˆ  ƒ d t ƒ } | |  | | ˆ  ˆ ˆ ƒ } | S(   NRf   R%   (   R	   R   Rk   R   (   t   input1t   input2t   op1t
   pooled_outt   op2Rc   (   Ru   RŽ   R   (    sD   /tmp/pip-build-X4mzal/theano/theano/tensor/signal/tests/test_pool.pyR   X  s    	Rr   (   i   (   i   (   i   (   i
   (   i   (   i   (   i   (   i   i
   (   i   (   i   (   i   (   i   i   i
   (   i   i   (   i   i   (   i   i   (   i   i   i
   i
   (   i   i   (   i   i   (   i   i   (   i   i   i
   i
   (   i   i   (   i   i   (   i   i   (   i   i   i
   i   (   i   i   (   i   i   (   i   i   (   i   i   i   i   (   i   i   i   (   i   i   i   (   i   i   i   (   i   i   i
   i   i   (   i   i   i   (   i   i   i   (   i   i   i   (   i   i   i   i
   i   (   i   i   i   (   i   i   i   (   i   i   i   (   i   i   i   i   i
   (   R   Rg   Rh   Ri   Rj   Rm   R‘   (   R   Rr   Rs   Rv   t   imval1t   imval2R   (    (   Ru   RŽ   R   sD   /tmp/pip-build-X4mzal/theano/theano/tensor/signal/tests/test_pool.pyt%   test_DownsampleFactorMaxGradGrad_gradD  s     c   	      ` s  t  j j t j ƒ  ƒ } d d f } | j d d ƒ } t j ƒ  } x¾ t | t	 t
 g d d d d	 g ƒ D]˜ \ ‰ ‰  ‰ |  j | ˆ ˆ  d
 ˆ ƒ} t | ˆ ˆ  d
 ˆ ƒ} t | g | ƒ | ƒ } t j | | ƒ ‡  ‡ ‡ f d †  } t j | | g d | ƒqg Wd  S(   Ni   i   i   i   i   R   R   RA   Re   R&   c         ` s   t  |  ˆ ˆ  d ˆ ƒS(   NR&   (   R
   (   R#   (   R%   Ru   R&   (    sD   /tmp/pip-build-X4mzal/theano/theano/tensor/signal/tests/test_pool.pyR   w  s    Rr   (   i   i   (   i   i   (   R   Rg   Rh   Ri   Rj   Rm   R‚   t   dmatrixR   Rk   Rl   R2   R
   R   Rp   R‘   (	   R   Rr   R…   Rw   Rx   Ry   Rz   R*   R   (    (   R%   Ru   R&   sD   /tmp/pip-build-X4mzal/theano/theano/tensor/signal/tests/test_pool.pyt   test_max_pool_2d_2Db  s$    				c   	      ` s
  t  j j t j ƒ  ƒ } d d f } | j d d d ƒ } t j ƒ  } x¾ t | t	 t
 g d d d	 d
 g ƒ D]˜ \ ‰ ‰  ‰ |  j | ˆ ˆ  d ˆ ƒ} t | ˆ ˆ  d ˆ ƒ} t | g | ƒ | ƒ } t j | | ƒ ‡  ‡ ‡ f d †  } t j | | g d | ƒqj Wd  S(   Ni   i   i   i   i   i   R   R   RA   Re   R&   c         ` s   t  |  ˆ ˆ  d ˆ ƒS(   NR&   (   R   (   R#   (   R%   Ru   R&   (    sD   /tmp/pip-build-X4mzal/theano/theano/tensor/signal/tests/test_pool.pyR   ‘  s    Rr   (   i   i   i   (   i   i   i   (   R   Rg   Rh   Ri   Rj   Rm   R‚   t   dtensor3R   Rk   Rl   R:   R   R   Rp   R‘   (	   R   Rr   R…   Rw   Rx   Ry   Rz   R*   R   (    (   R%   Ru   R&   sD   /tmp/pip-build-X4mzal/theano/theano/tensor/signal/tests/test_pool.pyt   test_max_pool_3d_3D|  s$    				c   	      ` s  t  j j t j ƒ  ƒ } d d f } | j d d d ƒ } t j ƒ  } xº t | t	 t
 g d d d	 d
 g ƒ D]” \ ‰ ‰  ‰ |  j | ˆ ˆ  d ˆ ƒ} t d | d ˆ d ˆ  d ˆ d d d ˆ ƒ } t | g | ƒ | ƒ } t j | | ƒ ‡  ‡ ‡ f d †  } qj Wd  S(   Ni   i   i   i   i   i   R   R   RA   Re   R&   R#   t   dsR%   t   stt   paddingi    c         ` s   t  |  ˆ ˆ  d ˆ ƒS(   NR&   (   R   (   R#   (   R%   Ru   R&   (    sD   /tmp/pip-build-X4mzal/theano/theano/tensor/signal/tests/test_pool.pyR   ¯  s    (   i   i   i   (   i   i   i   (   i    i    i    (   R   Rg   Rh   Ri   Rj   Rm   R‚   R¼   R   Rk   Rl   R:   R   R   Rp   (	   R   Rr   R…   Rw   Rx   Ry   Rz   R*   R   (    (   R%   Ru   R&   sD   /tmp/pip-build-X4mzal/theano/theano/tensor/signal/tests/test_pool.pyt(   test_max_pool_3d_3D_deprecated_interface–  s*    				c         ` s  t  j j t j ƒ  ƒ } t  j d d d d g d d d d g g g g ƒ j t j j	 ƒ } t  j d	 d	 d	 d	 g d	 d d	 d g g g g ƒ j t j j	 ƒ } t
 j d
 d ƒ } d ‰  t | ˆ  ƒ } t | g | ƒ | ƒ } t j | | ƒ ‡  f d †  } t j | | g d | ƒd  S(   Ng      ð?g       @g      @g      @g      @g      @g      @g       @g        t   nameR#   i   c         ` s   t  |  ˆ  ƒ S(   N(   R   (   R#   (   t
   patch_size(    sD   /tmp/pip-build-X4mzal/theano/theano/tensor/signal/tests/test_pool.pyR   Ã  s    Rr   (   i   i   (   R   Rg   Rh   Ri   Rj   t   arrayt   astypeRn   t   configt   floatXR‚   t   tensor4R   R   Rp   R‘   (   R   Rr   t   test_input_arrayt   test_answer_arrayR#   t   opt	   op_outputR   (    (   RÃ   sD   /tmp/pip-build-X4mzal/theano/theano/tensor/signal/tests/test_pool.pyt   test_max_pool_2d_2D_same_size³  s     c         C` sÖ   t  j j t j ƒ  ƒ } d
 g } | j d d d ƒ } t j ƒ  } x t | t	 t
 g d d d d g ƒ D]g \ } } } |  j | | | | ƒ } t | | | d	 | ƒ}	 t | g |	 ƒ | ƒ }
 t j |
 | ƒ qg Wd  S(   Ni   i   i   i   R   R   RA   Re   R&   (   i   i   (   R   Rg   Rh   Ri   Rj   Rm   R‚   R¼   R   Rk   Rl   R2   R
   R   Rp   (   R   Rr   R…   Rw   Rx   Ru   R%   R&   Ry   Rz   R*   (    (    sD   /tmp/pip-build-X4mzal/theano/theano/tensor/signal/tests/test_pool.pyt   test_max_pool_2d_3DÇ  s     					c         C` sò   t  j j t j ƒ  ƒ } d g } | j d d d d d d ƒ } t j d t g d ƒ ƒ  } x t	 | t
 t g d d d	 d
 g ƒ D]j \ } } } |  j | | | d | ƒ} t | | | d | ƒ}	 t | g |	 ƒ | ƒ }
 t j |
 | ƒ q€ Wd  S(   Ni   i   i   i   t   float64i   R   R   RA   Re   R&   (   i   i   (   R   Rg   Rh   Ri   Rj   Rm   R‚   t
   TensorTypeRl   R   Rk   R2   R
   R   Rp   (   R   Rr   R…   Rw   Rx   Ru   R%   R&   Ry   Rz   R*   (    (    sD   /tmp/pip-build-X4mzal/theano/theano/tensor/signal/tests/test_pool.pyt   test_max_pool_2d_6Dâ  s     					c         C` sv  t  j ƒ  } t  j ƒ  } t  j ƒ  } t j j t j ƒ  ƒ } d d d d d f } | j d d d d ƒ } d d d d g d d d d g g d d d d g d d d d g g d d d d g d d d d g g d d d d g d d d d g g d d d d g d d d d g g g d  d  g d d d d g d  g d d d d g d  g d d d d g d  g d d d d g d  g g d  d  g d  d  g d d d d g d  g d d d d g d  g d  d  g g g } x=t	 | ƒ D]/\ } }	 x t	 t
 t g ƒ D]\ }
 } xý t	 d d d g ƒ D]æ \ } } | | | |
 d  k r7qn  |  j | g t d
 | ƒ | |	 d | ƒg | g t ƒ | j | | | |
 Œ  } | j | | | |
 Œ  } |  j | | | g t d
 | ƒ | | | |	 d | ƒg | | | g t d t ƒqWqëWqÌWt  j  d d d t t t
 t
 f ƒ } | j d d d d ƒ } |  j | g t d
 t
 ƒ | d d d ƒg | g t ƒ d  S(   Ni   i   i   i   i   i   i	   i   i    R%   RE   t   warnR;   RÏ   t   broadcastable(   i   i   (   i   i   (   i   i   (   i   i   (   i   i   (   i    i    (   i   i   (   i   i   (   i   i   (   i    i    (   R‚   Rƒ   R   Rg   Rh   Ri   Rj   Rm   RV   t	   enumerateRk   Rl   t   _compile_and_checkR	   R   (   R   t   imaget   maxoutt   gzRr   R…   t	   image_valt
   out_shapesR-   Ru   R/   R%   R,   RE   t
   maxout_valt   gz_val(    (    sD   /tmp/pip-build-X4mzal/theano/theano/tensor/signal/tests/test_pool.pyt   test_infer_shapeý  s^    !!!!$			"	c         C` s!  t  j ƒ  } t  j ƒ  } t  j ƒ  } t  j ƒ  } t j j d d d ƒ j d ƒ } xÉt t g D]»} x²d d d d g D]ž} t	 | | | | | | ƒ } t
 j j | j ƒ  | ƒ }	 t
 j | | | | g | |	 g ƒ }
 x;d D]3} x*d D]"} xd D]} | | k sø | | k sø | d k r)| sø | d k rG| d k rGqø n  t	 | | | f | | | f | | f | ƒ } t
 j j | j ƒ  | ƒ }	 t
 j | g | |	 g ƒ } |
 | | | f | | f | | f ƒ \ } } | | ƒ \ } } t j | | ƒ t j | | ƒ qø Wqë WqÞ Wqw Wq^ Wd  S(   Ni    i   i   t   float32R   R   RA   Re   i   i   i   (   i   i   i   i   (   i   i   i   (   i   i   (   i    i   (   R‚   t   ftensor4t   ivectorR   Rg   t   normalRÅ   Rk   Rl   R
   Rn   t   gradientR–   R   R   Ri   Rp   (   R   R<   t   window_sizeRD   RÀ   t   dataR%   R&   R=   t   dxt   var_fctR$   R¿   RE   t   fix_fctt   var_yt   var_dxt   fix_yt   fix_dx(    (    sD   /tmp/pip-build-X4mzal/theano/theano/tensor/signal/tests/test_pool.pyt   test_pooling_with_tensor_vars4  s8    !	c         C` s$  t  j ƒ  } t  j ƒ  } t  j ƒ  } t  j ƒ  } t j j d d d ƒ j d ƒ } xÌt t g D]¾} xµd d d d g D]¡} t	 d	 | d
 | d | d | d | d | ƒ } t
 j j | j ƒ  | ƒ }	 t
 j | | | | g | |	 g ƒ }
 d } d } d } | | k sw | | k sw | d k r&| sw | d k rD| d k rDqw n  t	 d	 | d
 | | f d | d | | f d | | f d | ƒ } t
 j j | j ƒ  | ƒ }	 t
 j | g | |	 g ƒ } |
 | | | f | | f | | f ƒ \ } } | | ƒ \ } } t j | | ƒ t j | | ƒ qw Wq^ Wd  S(   Ni    i   i   RÞ   R   R   RA   Re   R#   R¾   R%   R¿   RÀ   R&   i   (   i   i   i   i   (   R‚   Rß   Rà   R   Rg   Rá   RÅ   Rk   Rl   R
   Rn   Râ   R–   R   R   Ri   Rp   (   R   R<   Rã   RD   RÀ   Rä   R%   R&   R=   Rå   Ræ   R$   R¿   RE   Rç   Rè   Ré   Rê   Rë   (    (    sD   /tmp/pip-build-X4mzal/theano/theano/tensor/signal/tests/test_pool.pyt2   test_pooling_with_tensor_vars_deprecated_interfaceT  sH    !		c      	   C` sø  t  j d d k r" t d ƒ ‚ n  t j j t j j t ƒ ƒ } d } t t j j	 | | ƒ d ƒ n } y t
 j | d d ƒ} WnK t k
 rÍ t  j d k rÇ t  j ƒ  \ } } } t t | | ƒ n  ‚  n XWd  QXt j j ƒ  } t | d d
 d d t ƒ}	 t | d d
 d d t ƒ}
 t j j |	 j ƒ  | ƒ } t j j |
 j ƒ  | ƒ } t j | g |	 |
 | | g ƒ } t j j t j ƒ  ƒ } | j d d d d ƒ j t j  ƒ } | | ƒ } | | ƒ } x- t! | | ƒ D] \ } } t j" | | ƒ qÔWd  S(   Ni    i   s'   Skip old pool interface with python 2.xs   old_pool_interface.pklt   rbt   encodingt   latin1t   win32i   R&   R   R%   Re   i   i   i   i	   (   i   i   (   i   i   (#   t   syst   version_infoR   t   ost   patht   dirnamet   realpatht   __file__t   opent   joinR   t   loadt   ImportErrort   platformt   exc_infoR   Rn   R‚   Rß   R
   Rk   Râ   R–   R   R   R   Rg   Rh   Ri   Rj   Rm   RÅ   RÞ   t   zipRp   (   R   t   testfile_dirt   fnamet   fpt   old_fctt   exc_typet	   exc_valuet	   exc_traceR<   R=   R­   t   dy_dxt   dz_dxt   new_fctRr   RÙ   t   old_outt   new_outt   ot   n(    (    sD   /tmp/pip-build-X4mzal/theano/theano/tensor/signal/tests/test_pool.pyt   test_old_pool_interface|  s0    !!$N(   i    i    (   i   (   i   (   i   (   i   (   i   (   i   i   (   i   (   i   (   i   i   i   (   i   (   i   (   i   (   i   (   i   (   i   i   (   i   (   i   (   i   i   i   (   i   i   (   i   i   (   i   i   i   i   (   i   i   (   i   i   (   i   i   i   i   (   i   i   (   i   i   (   i   i   i   i   (   i   i   (   i   i   (   i   i   i   i   (   i   i   (   i   i   (   i   i   i   i   (   i   i   (   i   i   (   i   i   i   i   (   i   i   (   i   i   (   i   i   i   i   (   i   i   (   i   i   (   i   i   i   i   (   i   i   (   i   i   (   i   i   i   i   (   i   i   i   (   i   i   i   (   i   i   i   (   i   i   i   (   i   i   i   (   i   i   i   i   (   i   i   i   (   i   i   i   (   i   i   i   i   i   (   i   i   (   i   i   (   i   i   i   i   (   i   i   (   i   i   (   i   i   i   i   (   i   i   (   i
   i   (   i   i   i   i   (   i   i   (   i   i   (   i   i   i   i   (   i   i   (   i   i   (   i   i   i   i   (   i   i   (   i
   i
   (   i   i   i   i   (   i	   i	   (   i   i   (   i   i   i   i   (,   t   __name__t
   __module__R   t   staticmethodRl   R2   R:   Rk   RV   RU   R_   Rb   Rd   R~   R   RŒ   R   R’   R“   t   pool_grad_stride_examplesR   t   expandR   Ri   t   custom_name_funcR•   Rš   Rœ   Rž   RŸ   R    R¡   R±   R¹   R»   R½   RÁ   RÍ   RÎ   RÑ   RÝ   Rì   Rí   R  (    (    (    sD   /tmp/pip-build-X4mzal/theano/theano/tensor/signal/tests/test_pool.pyR      sœ   	 44=*	;	;	)	$		"		&	%		%	$									7	 	(t   __main__((   t
   __future__R    R   R   t   nose.plugins.skipR   t   nose_parameterizedR   t	   itertoolsR   Rô   t   unittestt   sixR   t	   six.movesR   t   six.moves.builtinst   movesRB   Rò   R   Rn   t   theano.tensorR‚   t   theano.testsR   Ri   t   theano.tensor.signal.poolR	   R
   R   R   R   R   R   R   t   InferShapeTesterR   R  t   main(    (    (    sD   /tmp/pip-build-X4mzal/theano/theano/tensor/signal/tests/test_pool.pyt   <module>   s,   4ÿ ÿ ÿ ÿ ‰