<s> from __future__ import absolute_import , print_function , division <EOL> from nose . plugins . skip import SkipTest <EOL> import numpy <EOL> import unittest <EOL> import theano <EOL> from theano import shared , function <EOL> import theano . tensor as T <EOL> from theano . tensor . nnet . neighbours import images2neibs , neibs2images , Images2Neibs <EOL> from theano . tests import unittest_tools <EOL> mode_without_gpu = theano . compile . mode . get_default_mode ( ) . excluding ( '<STR_LIT>' ) <EOL> class T_Images2Neibs ( unittest_tools . InferShapeTester ) : <EOL> mode = mode_without_gpu <EOL> op = Images2Neibs <EOL> dtypes = [ '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' ] <EOL> def test_neibs ( self ) : <EOL> for shape , pshape in [ ( ( <NUM_LIT:10> , <NUM_LIT:7> , <NUM_LIT> , <NUM_LIT> ) , ( <NUM_LIT:2> , <NUM_LIT:2> ) ) , <EOL> ( ( <NUM_LIT:10> , <NUM_LIT:7> , <NUM_LIT:6> , <NUM_LIT> ) , ( <NUM_LIT:3> , <NUM_LIT:2> ) ) , <EOL> ( ( <NUM_LIT:5> , <NUM_LIT:7> , <NUM_LIT> , <NUM_LIT> ) , ( <NUM_LIT> , <NUM_LIT> ) ) , <EOL> ( ( <NUM_LIT:5> , <NUM_LIT:7> , <NUM_LIT> , <NUM_LIT> ) , ( <NUM_LIT> , <NUM_LIT> ) ) <EOL> ] : <EOL> for border in [ '<STR_LIT>' , '<STR_LIT>' ] : <EOL> for dtype in self . dtypes : <EOL> images = shared ( <EOL> numpy . arange ( numpy . prod ( shape ) , dtype = dtype <EOL> ) . reshape ( shape ) ) <EOL> neib_shape = T . as_tensor_variable ( pshape ) <EOL> f = function ( [ ] , <EOL> images2neibs ( images , neib_shape , mode = border ) , <EOL> mode = self . mode ) <EOL> neibs = f ( ) <EOL> g = function ( [ ] , <EOL> neibs2images ( neibs , neib_shape , images . shape ) , <EOL> mode = self . mode ) <EOL> assert any ( [ isinstance ( node . op , self . op ) <EOL> for node in f . maker . fgraph . toposort ( ) ] ) <EOL> assert numpy . allclose ( images . get_value ( borrow = True ) , g ( ) ) <EOL> def test_neibs_manual ( self ) : <EOL> shape = ( <NUM_LIT:2> , <NUM_LIT:3> , <NUM_LIT:4> , <NUM_LIT:4> ) <EOL> for dtype in self . dtypes : <EOL> images = shared ( <EOL> numpy . arange ( numpy . prod ( shape ) , dtype = dtype <EOL> ) . reshape ( shape ) ) <EOL> neib_shape = T . as_tensor_variable ( ( <NUM_LIT:2> , <NUM_LIT:2> ) ) <EOL> for border in [ '<STR_LIT>' , '<STR_LIT>' ] : <EOL> f = function ( [ ] , images2neibs ( images , neib_shape , mode = border ) , <EOL> mode = self . mode ) <EOL> assert any ( [ isinstance ( node . op , self . op ) <EOL> for node in f . maker . fgraph . toposort ( ) ] ) <EOL> neibs = f ( ) <EOL> assert numpy . allclose ( neibs , <EOL> [ [ <NUM_LIT:0> , <NUM_LIT:1> , <NUM_LIT:4> , <NUM_LIT:5> ] , <EOL> [ <NUM_LIT:2> , <NUM_LIT:3> , <NUM_LIT:6> , <NUM_LIT:7> ] , <EOL> [ <NUM_LIT:8> , <NUM_LIT:9> , <NUM_LIT:12> , <NUM_LIT> ] , <EOL> [ <NUM_LIT:10> , <NUM_LIT:11> , <NUM_LIT> , <NUM_LIT:15> ] , <EOL> [ <NUM_LIT:16> , <NUM_LIT> , <NUM_LIT:20> , <NUM_LIT> ] , <EOL> [ <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> ] , <EOL> [ <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> ] , <EOL> [ <NUM_LIT> , <NUM_LIT> , <NUM_LIT:30> , <NUM_LIT> ] , <EOL> [ <NUM_LIT:32> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> ] , <EOL> [ <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> ] , <EOL> [ <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> ] , <EOL> [ <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> ] , <EOL> [ <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> ] , <EOL> [ <NUM_LIT:50> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> ] , <EOL> [ <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> ] , <EOL> [ <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> ] , <EOL> [ <NUM_LIT:64> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> ] , <EOL> [ <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> ] , <EOL> [ <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> ] , <EOL> [ <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> ] , <EOL> [ <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> ] , <EOL> [ <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> ] , <EOL> [ <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> ] , <EOL> [ <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> ] ] ) <EOL> g = function ( [ ] , neibs2images ( neibs , neib_shape , images . shape ) , <EOL> mode = self . mode ) <EOL> assert numpy . allclose ( images . get_value ( borrow = True ) , g ( ) ) <EOL> def test_neibs_manual_step ( self ) : <EOL> shape = ( <NUM_LIT:2> , <NUM_LIT:3> , <NUM_LIT:5> , <NUM_LIT:5> ) <EOL> for dtype in self . dtypes : <EOL> images = shared ( numpy . asarray ( numpy . arange ( numpy . prod ( <EOL> shape ) ) . reshape ( shape ) , dtype = dtype ) ) <EOL> neib_shape = T . as_tensor_variable ( ( <NUM_LIT:3> , <NUM_LIT:3> ) ) <EOL> neib_step = T . as_tensor_variable ( ( <NUM_LIT:2> , <NUM_LIT:2> ) ) <EOL> for border in [ '<STR_LIT>' , '<STR_LIT>' ] : <EOL> f = function ( [ ] , <EOL> images2neibs ( images , neib_shape , neib_step , <EOL> mode = border ) , <EOL> mode = self . mode ) <EOL> neibs = f ( ) <EOL> assert self . op in [ type ( node . op ) <EOL> for node in f . maker . fgraph . toposort ( ) ] <EOL> assert numpy . allclose ( neibs , <EOL> [ [ <NUM_LIT:0> , <NUM_LIT:1> , <NUM_LIT:2> , <NUM_LIT:5> , <NUM_LIT:6> , <NUM_LIT:7> , <NUM_LIT:10> , <NUM_LIT:11> , <NUM_LIT:12> ] , <EOL> [ <NUM_LIT:2> , <NUM_LIT:3> , <NUM_LIT:4> , <NUM_LIT:7> , <NUM_LIT:8> , <NUM_LIT:9> , <NUM_LIT:12> , <NUM_LIT> , <NUM_LIT> ] , <EOL> [ <NUM_LIT:10> , <NUM_LIT:11> , <NUM_LIT:12> , <NUM_LIT:15> , <NUM_LIT:16> , <NUM_LIT> , <NUM_LIT:20> , <NUM_LIT> , <NUM_LIT> ] , <EOL> [ <NUM_LIT:12> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> ] , <EOL> [ <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT:30> , <NUM_LIT> , <NUM_LIT:32> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> ] , <EOL> [ <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT:32> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> ] , <EOL> [ <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> ] , <EOL> [ <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> ] , <EOL> [ <NUM_LIT:50> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> ] , <EOL> [ <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT:64> ] , <EOL> [ <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> ] , <EOL> [ <NUM_LIT> , <NUM_LIT> , <NUM_LIT:64> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> ] , <EOL> [ <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> ] , <EOL> [ <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> ] , <EOL> [ <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> ] , <EOL> [ <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> ] , <EOL> [ <NUM_LIT:100> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> ] , <EOL> [ <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> ] , <EOL> [ <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> ] , <EOL> [ <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> ] , <EOL> [ <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> ] , <EOL> [ <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> ] , <EOL> [ <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> ] , <EOL> [ <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> ] ] ) <EOL> def test_neibs_bad_shape ( self ) : <EOL> shape = ( <NUM_LIT:2> , <NUM_LIT:3> , <NUM_LIT:10> , <NUM_LIT:10> ) <EOL> for dtype in self . dtypes : <EOL> images = shared ( numpy . arange ( <EOL> numpy . prod ( shape ) , dtype = dtype <EOL> ) . reshape ( shape ) ) <EOL> for neib_shape in [ ( <NUM_LIT:3> , <NUM_LIT:2> ) , ( <NUM_LIT:2> , <NUM_LIT:3> ) ] : <EOL> neib_shape = T . as_tensor_variable ( neib_shape ) <EOL> f = function ( [ ] , images2neibs ( images , neib_shape ) , <EOL> mode = self . mode ) <EOL> self . assertRaises ( TypeError , f ) <EOL> f = function ( [ ] , <EOL> images2neibs ( images , neib_shape , <EOL> mode = '<STR_LIT>' ) , <EOL> mode = self . mode ) <EOL> assert self . op in [ type ( node . op ) <EOL> for node in f . maker . fgraph . toposort ( ) ] <EOL> f ( ) <EOL> def test_neibs_wrap_centered_step_manual ( self ) : <EOL> expected1 = [ [ <NUM_LIT> , <NUM_LIT:20> , <NUM_LIT> , <NUM_LIT:4> , <NUM_LIT:0> , <NUM_LIT:1> , <NUM_LIT:9> , <NUM_LIT:5> , <NUM_LIT:6> ] , <EOL> [ <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT:1> , <NUM_LIT:2> , <NUM_LIT:3> , <NUM_LIT:6> , <NUM_LIT:7> , <NUM_LIT:8> ] , <EOL> [ <NUM_LIT> , <NUM_LIT> , <NUM_LIT:20> , <NUM_LIT:3> , <NUM_LIT:4> , <NUM_LIT:0> , <NUM_LIT:8> , <NUM_LIT:9> , <NUM_LIT:5> ] , <EOL> [ <NUM_LIT:9> , <NUM_LIT:5> , <NUM_LIT:6> , <NUM_LIT> , <NUM_LIT:10> , <NUM_LIT:11> , <NUM_LIT> , <NUM_LIT:15> , <NUM_LIT:16> ] , <EOL> [ <NUM_LIT:6> , <NUM_LIT:7> , <NUM_LIT:8> , <NUM_LIT:11> , <NUM_LIT:12> , <NUM_LIT> , <NUM_LIT:16> , <NUM_LIT> , <NUM_LIT> ] , <EOL> [ <NUM_LIT:8> , <NUM_LIT:9> , <NUM_LIT:5> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT:10> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT:15> ] , <EOL> [ <NUM_LIT> , <NUM_LIT:15> , <NUM_LIT:16> , <NUM_LIT> , <NUM_LIT:20> , <NUM_LIT> , <NUM_LIT:4> , <NUM_LIT:0> , <NUM_LIT:1> ] , <EOL> [ <NUM_LIT:16> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT:1> , <NUM_LIT:2> , <NUM_LIT:3> ] , <EOL> [ <NUM_LIT> , <NUM_LIT> , <NUM_LIT:15> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT:20> , <NUM_LIT:3> , <NUM_LIT:4> , <NUM_LIT:0> ] ] <EOL> expected2 = [ [ <NUM_LIT> , <NUM_LIT:20> , <NUM_LIT> , <NUM_LIT:4> , <NUM_LIT:0> , <NUM_LIT:1> , <NUM_LIT:9> , <NUM_LIT:5> , <NUM_LIT:6> ] , <EOL> [ <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT:2> , <NUM_LIT:3> , <NUM_LIT:4> , <NUM_LIT:7> , <NUM_LIT:8> , <NUM_LIT:9> ] , <EOL> [ <NUM_LIT> , <NUM_LIT:10> , <NUM_LIT:11> , <NUM_LIT> , <NUM_LIT:15> , <NUM_LIT:16> , <NUM_LIT> , <NUM_LIT:20> , <NUM_LIT> ] , <EOL> [ <NUM_LIT:12> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> ] ] <EOL> expected3 = [ [ <NUM_LIT> , <NUM_LIT:15> , <NUM_LIT:16> , <NUM_LIT> , <NUM_LIT:20> , <NUM_LIT> , <NUM_LIT:4> , <NUM_LIT:0> , <NUM_LIT:1> , <NUM_LIT:9> , <NUM_LIT:5> , <NUM_LIT:6> , <NUM_LIT> , <NUM_LIT:10> , <NUM_LIT:11> ] , <EOL> [ <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT:2> , <NUM_LIT:3> , <NUM_LIT:4> , <NUM_LIT:7> , <NUM_LIT:8> , <NUM_LIT:9> , <NUM_LIT:12> , <NUM_LIT> , <NUM_LIT> ] , <EOL> [ <NUM_LIT:9> , <NUM_LIT:5> , <NUM_LIT:6> , <NUM_LIT> , <NUM_LIT:10> , <NUM_LIT:11> , <NUM_LIT> , <NUM_LIT:15> , <NUM_LIT:16> , <NUM_LIT> , <NUM_LIT:20> , <NUM_LIT> , <NUM_LIT:4> , <NUM_LIT:0> , <NUM_LIT:1> ] , <EOL> [ <NUM_LIT:7> , <NUM_LIT:8> , <NUM_LIT:9> , <NUM_LIT:12> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT:2> , <NUM_LIT:3> , <NUM_LIT:4> ] ] <EOL> expected4 = [ [ <NUM_LIT> , <NUM_LIT> , <NUM_LIT:20> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT:3> , <NUM_LIT:4> , <NUM_LIT:0> , <NUM_LIT:1> , <NUM_LIT:2> , <NUM_LIT:8> , <NUM_LIT:9> , <NUM_LIT:5> , <NUM_LIT:6> , <NUM_LIT:7> ] , <EOL> [ <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT:20> , <NUM_LIT:1> , <NUM_LIT:2> , <NUM_LIT:3> , <NUM_LIT:4> , <NUM_LIT:0> , <NUM_LIT:6> , <NUM_LIT:7> , <NUM_LIT:8> , <NUM_LIT:9> , <NUM_LIT:5> ] , <EOL> [ <NUM_LIT> , <NUM_LIT> , <NUM_LIT:10> , <NUM_LIT:11> , <NUM_LIT:12> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT:15> , <NUM_LIT:16> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT:20> , <NUM_LIT> , <NUM_LIT> ] , <EOL> [ <NUM_LIT:11> , <NUM_LIT:12> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT:10> , <NUM_LIT:16> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT:15> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT:20> ] ] <EOL> expected5 = [ [ <NUM_LIT> , <NUM_LIT:20> , <NUM_LIT> , <NUM_LIT:4> , <NUM_LIT:0> , <NUM_LIT:1> , <NUM_LIT:9> , <NUM_LIT:5> , <NUM_LIT:6> ] , <EOL> [ <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT:2> , <NUM_LIT:3> , <NUM_LIT:4> , <NUM_LIT:7> , <NUM_LIT:8> , <NUM_LIT:9> ] , <EOL> [ <NUM_LIT:9> , <NUM_LIT:5> , <NUM_LIT:6> , <NUM_LIT> , <NUM_LIT:10> , <NUM_LIT:11> , <NUM_LIT> , <NUM_LIT:15> , <NUM_LIT:16> ] , <EOL> [ <NUM_LIT:7> , <NUM_LIT:8> , <NUM_LIT:9> , <NUM_LIT:12> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> ] , <EOL> [ <NUM_LIT> , <NUM_LIT:15> , <NUM_LIT:16> , <NUM_LIT> , <NUM_LIT:20> , <NUM_LIT> , <NUM_LIT:4> , <NUM_LIT:0> , <NUM_LIT:1> ] , <EOL> [ <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT:2> , <NUM_LIT:3> , <NUM_LIT:4> ] ] <EOL> expected6 = [ [ <NUM_LIT> , <NUM_LIT:20> , <NUM_LIT> , <NUM_LIT:4> , <NUM_LIT:0> , <NUM_LIT:1> , <NUM_LIT:9> , <NUM_LIT:5> , <NUM_LIT:6> ] , <EOL> [ <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT:1> , <NUM_LIT:2> , <NUM_LIT:3> , <NUM_LIT:6> , <NUM_LIT:7> , <NUM_LIT:8> ] , <EOL> [ <NUM_LIT> , <NUM_LIT> , <NUM_LIT:20> , <NUM_LIT:3> , <NUM_LIT:4> , <NUM_LIT:0> , <NUM_LIT:8> , <NUM_LIT:9> , <NUM_LIT:5> ] , <EOL> [ <NUM_LIT> , <NUM_LIT:10> , <NUM_LIT:11> , <NUM_LIT> , <NUM_LIT:15> , <NUM_LIT:16> , <NUM_LIT> , <NUM_LIT:20> , <NUM_LIT> ] , <EOL> [ <NUM_LIT:11> , <NUM_LIT:12> , <NUM_LIT> , <NUM_LIT:16> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> ] , <EOL> [ <NUM_LIT> , <NUM_LIT> , <NUM_LIT:10> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT:15> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT:20> ] ] <EOL> for shp_idx , ( shape , neib_shape , neib_step , expected ) in enumerate ( [ <EOL> [ ( <NUM_LIT:7> , <NUM_LIT:8> , <NUM_LIT:5> , <NUM_LIT:5> ) , ( <NUM_LIT:3> , <NUM_LIT:3> ) , ( <NUM_LIT:2> , <NUM_LIT:2> ) , expected1 ] , <EOL> [ ( <NUM_LIT:7> , <NUM_LIT:8> , <NUM_LIT:5> , <NUM_LIT:5> ) , ( <NUM_LIT:3> , <NUM_LIT:3> ) , ( <NUM_LIT:3> , <NUM_LIT:3> ) , expected2 ] , <EOL> [ ( <NUM_LIT:7> , <NUM_LIT:8> , <NUM_LIT:5> , <NUM_LIT:5> ) , ( <NUM_LIT:5> , <NUM_LIT:3> ) , ( <NUM_LIT:3> , <NUM_LIT:3> ) , expected3 ] , <EOL> [ ( <NUM_LIT:7> , <NUM_LIT:8> , <NUM_LIT:5> , <NUM_LIT:5> ) , ( <NUM_LIT:3> , <NUM_LIT:5> ) , ( <NUM_LIT:3> , <NUM_LIT:3> ) , expected4 ] , <EOL> [ ( <NUM_LIT> , <NUM_LIT> , <NUM_LIT:5> , <NUM_LIT:5> ) , ( <NUM_LIT:3> , <NUM_LIT:3> ) , ( <NUM_LIT:2> , <NUM_LIT:3> ) , expected5 ] , <EOL> [ ( <NUM_LIT> , <NUM_LIT:9> , <NUM_LIT:5> , <NUM_LIT:5> ) , ( <NUM_LIT:3> , <NUM_LIT:3> ) , ( <NUM_LIT:3> , <NUM_LIT:2> ) , expected6 ] , <EOL> [ ( <NUM_LIT:1> , <NUM_LIT:1> , <NUM_LIT:5> , <NUM_LIT> ) , ( <NUM_LIT:3> , <NUM_LIT:3> ) , ( <NUM_LIT:3> , <NUM_LIT:3> ) , None ] , <EOL> [ ( <NUM_LIT:1> , <NUM_LIT:1> , <NUM_LIT> , <NUM_LIT:5> ) , ( <NUM_LIT:3> , <NUM_LIT:3> ) , ( <NUM_LIT:3> , <NUM_LIT:3> ) , None ] , <EOL> ] ) : <EOL> for dtype in self . dtypes : <EOL> images = shared ( numpy . asarray ( numpy . arange ( numpy . prod ( <EOL> shape ) ) . reshape ( shape ) , dtype = dtype ) ) <EOL> neib_shape = T . as_tensor_variable ( neib_shape ) <EOL> neib_step = T . as_tensor_variable ( neib_step ) <EOL> expected = numpy . asarray ( expected ) <EOL> f = function ( [ ] , images2neibs ( images , neib_shape , neib_step , <EOL> mode = "<STR_LIT>" ) , <EOL> mode = self . mode ) <EOL> neibs = f ( ) <EOL> if expected . size > <NUM_LIT:1> : <EOL> for i in range ( shape [ <NUM_LIT:0> ] * shape [ <NUM_LIT:1> ] ) : <EOL> assert numpy . allclose ( <EOL> neibs [ i * expected . shape [ <NUM_LIT:0> ] : <EOL> ( i + <NUM_LIT:1> ) * expected . shape [ <NUM_LIT:0> ] , : ] , <EOL> expected + <NUM_LIT> * i ) , "<STR_LIT>" <EOL> assert self . op in [ type ( node . op ) <EOL> for node in f . maker . fgraph . toposort ( ) ] <EOL> def test_neibs_bad_shape_wrap_centered ( self ) : <EOL> shape = ( <NUM_LIT:2> , <NUM_LIT:3> , <NUM_LIT:10> , <NUM_LIT:10> ) <EOL> for dtype in self . dtypes : <EOL> images = shared ( numpy . arange ( <EOL> numpy . prod ( shape ) , dtype = dtype <EOL> ) . reshape ( shape ) ) <EOL> for neib_shape in [ ( <NUM_LIT:3> , <NUM_LIT:2> ) , ( <NUM_LIT:2> , <NUM_LIT:3> ) ] : <EOL> neib_shape = T . as_tensor_variable ( neib_shape ) <EOL> f = function ( [ ] , images2neibs ( images , neib_shape , <EOL> mode = "<STR_LIT>" ) , <EOL> mode = self . mode ) <EOL> self . assertRaises ( TypeError , f ) <EOL> for shape in [ ( <NUM_LIT:2> , <NUM_LIT:3> , <NUM_LIT:2> , <NUM_LIT:3> ) , ( <NUM_LIT:2> , <NUM_LIT:3> , <NUM_LIT:3> , <NUM_LIT:2> ) ] : <EOL> images = shared ( numpy . arange ( numpy . prod ( shape ) ) . reshape ( shape ) ) <EOL> neib_shape = T . as_tensor_variable ( ( <NUM_LIT:3> , <NUM_LIT:3> ) ) <EOL> f = function ( [ ] , images2neibs ( images , neib_shape , <EOL> mode = "<STR_LIT>" ) , <EOL> mode = self . mode ) <EOL> self . assertRaises ( TypeError , f ) <EOL> shape = ( <NUM_LIT:2> , <NUM_LIT:3> , <NUM_LIT:3> , <NUM_LIT:3> ) <EOL> images = shared ( numpy . arange ( numpy . prod ( shape ) ) . reshape ( shape ) ) <EOL> neib_shape = T . as_tensor_variable ( ( <NUM_LIT:3> , <NUM_LIT:3> ) ) <EOL> f = function ( [ ] , <EOL> images2neibs ( images , neib_shape , mode = "<STR_LIT>" ) , <EOL> mode = self . mode ) <EOL> f ( ) <EOL> def test_grad_wrap_centered ( self ) : <EOL> shape = ( <NUM_LIT:2> , <NUM_LIT:3> , <NUM_LIT:6> , <NUM_LIT:6> ) <EOL> images_val = numpy . random . rand ( * shape ) . astype ( '<STR_LIT>' ) <EOL> def fn ( images ) : <EOL> return images2neibs ( images , ( <NUM_LIT:3> , <NUM_LIT:3> ) , mode = '<STR_LIT>' ) <EOL> self . assertRaises ( TypeError , unittest_tools . verify_grad , <EOL> fn , [ images_val ] , mode = self . mode ) <EOL> def test_grad_valid ( self ) : <EOL> shape = ( <NUM_LIT:2> , <NUM_LIT:3> , <NUM_LIT:6> , <NUM_LIT:6> ) <EOL> images_val = numpy . random . rand ( * shape ) . astype ( '<STR_LIT>' ) <EOL> def fn ( images ) : <EOL> return images2neibs ( images , ( <NUM_LIT:2> , <NUM_LIT:2> ) ) <EOL> unittest_tools . verify_grad ( fn , [ images_val ] , mode = self . mode , <EOL> eps = <NUM_LIT:0.1> ) <EOL> def fn ( images ) : <EOL> return images2neibs ( images , ( <NUM_LIT:3> , <NUM_LIT:2> ) , ( <NUM_LIT:1> , <NUM_LIT:2> ) ) <EOL> unittest_tools . verify_grad ( fn , [ images_val ] , mode = self . mode , <EOL> eps = <NUM_LIT:0.1> ) <EOL> def fn ( images ) : <EOL> return images2neibs ( images , ( <NUM_LIT:1> , <NUM_LIT:2> ) , ( <NUM_LIT:5> , <NUM_LIT:2> ) ) <EOL> unittest_tools . verify_grad ( fn , [ images_val ] , mode = self . mode , <EOL> eps = <NUM_LIT:0.1> ) <EOL> def test_grad_ignore_border ( self ) : <EOL> shape = ( <NUM_LIT:2> , <NUM_LIT:3> , <NUM_LIT:5> , <NUM_LIT:5> ) <EOL> images_val = numpy . random . rand ( * shape ) . astype ( '<STR_LIT>' ) <EOL> def fn ( images ) : <EOL> return images2neibs ( images , ( <NUM_LIT:2> , <NUM_LIT:2> ) , <EOL> mode = '<STR_LIT>' ) <EOL> unittest_tools . verify_grad ( fn , [ images_val ] , mode = self . mode , <EOL> eps = <NUM_LIT:0.1> ) <EOL> def test_neibs2images_grad ( self ) : <EOL> neibs_val = numpy . random . rand ( <NUM_LIT> , <NUM_LIT:4> ) <EOL> def fn ( neibs ) : <EOL> return neibs2images ( neibs , ( <NUM_LIT:2> , <NUM_LIT:2> ) , ( <NUM_LIT:2> , <NUM_LIT:3> , <NUM_LIT:10> , <NUM_LIT:10> ) ) <EOL> unittest_tools . verify_grad ( fn , [ neibs_val ] , mode = self . mode , <EOL> eps = <NUM_LIT:0.1> ) <EOL> def test_neibs_valid_with_inconsistent_borders ( self ) : <EOL> shape = ( <NUM_LIT:2> , <NUM_LIT:3> , <NUM_LIT:5> , <NUM_LIT:5> ) <EOL> images = T . dtensor4 ( ) <EOL> images_val = numpy . arange ( numpy . prod ( shape ) , <EOL> dtype = '<STR_LIT>' ) . reshape ( shape ) <EOL> def fn ( images ) : <EOL> return T . sum ( T . sqr ( images2neibs ( images , ( <NUM_LIT:2> , <NUM_LIT:2> ) , mode = '<STR_LIT>' ) ) , <EOL> axis = [ <NUM_LIT:0> , <NUM_LIT:1> ] ) <EOL> f = theano . function ( [ images ] , <EOL> T . sqr ( images2neibs ( images , ( <NUM_LIT:2> , <NUM_LIT:2> ) , mode = '<STR_LIT>' ) ) , <EOL> mode = self . mode ) <EOL> self . assertRaises ( TypeError , f , images_val ) <EOL> def speed_neibs ( self ) : <EOL> shape = ( <NUM_LIT:100> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> ) <EOL> images = shared ( numpy . arange ( numpy . prod ( shape ) , <EOL> dtype = '<STR_LIT>' ) . reshape ( shape ) ) <EOL> neib_shape = T . as_tensor_variable ( ( <NUM_LIT:3> , <NUM_LIT:3> ) ) <EOL> f = function ( [ ] , images2neibs ( images , neib_shape ) , <EOL> mode = self . mode ) <EOL> for i in range ( <NUM_LIT:1000> ) : <EOL> f ( ) <EOL> def speed_neibs_wrap_centered ( self ) : <EOL> shape = ( <NUM_LIT:100> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> ) <EOL> images = shared ( numpy . arange ( numpy . prod ( shape ) , <EOL> dtype = '<STR_LIT>' ) . reshape ( shape ) ) <EOL> neib_shape = T . as_tensor_variable ( ( <NUM_LIT:3> , <NUM_LIT:3> ) ) <EOL> f = function ( [ ] , <EOL> images2neibs ( images , neib_shape , mode = "<STR_LIT>" ) , <EOL> mode = self . mode ) <EOL> for i in range ( <NUM_LIT:1000> ) : <EOL> f ( ) <EOL> def test_infer_shape ( self ) : <EOL> shape = ( <NUM_LIT:100> , <NUM_LIT> , <NUM_LIT:6> , <NUM_LIT:3> ) <EOL> images = numpy . ones ( shape ) . astype ( '<STR_LIT>' ) <EOL> x = T . ftensor4 ( ) <EOL> f = self . _compile_and_check ( [ x ] , <EOL> [ images2neibs ( <EOL> x , neib_shape = ( <NUM_LIT:2> , <NUM_LIT:1> ) , <EOL> mode = '<STR_LIT>' ) ] , <EOL> [ images ] , <EOL> Images2Neibs <EOL> ) <EOL> f = self . _compile_and_check ( [ x ] , <EOL> [ images2neibs ( <EOL> x , neib_shape = ( <NUM_LIT:2> , <NUM_LIT:3> ) , <EOL> mode = '<STR_LIT>' ) ] , <EOL> [ images ] , <EOL> Images2Neibs <EOL> ) <EOL> shape = ( <NUM_LIT:100> , <NUM_LIT> , <NUM_LIT:5> , <NUM_LIT:4> ) <EOL> images = numpy . ones ( shape ) . astype ( '<STR_LIT>' ) <EOL> x = T . ftensor4 ( ) <EOL> f = self . _compile_and_check ( [ x ] , <EOL> [ images2neibs ( <EOL> x , neib_shape = ( <NUM_LIT:2> , <NUM_LIT:1> ) , <EOL> mode = '<STR_LIT>' ) ] , <EOL> [ images ] , <EOL> Images2Neibs <EOL> ) <EOL> shape = ( <NUM_LIT:100> , <NUM_LIT> , <NUM_LIT:5> , <NUM_LIT:3> ) <EOL> images = numpy . ones ( shape ) . astype ( '<STR_LIT>' ) <EOL> x = T . ftensor4 ( ) <EOL> f = self . _compile_and_check ( [ x ] , <EOL> [ images2neibs ( <EOL> x , neib_shape = ( <NUM_LIT:2> , <NUM_LIT:3> ) , <EOL> mode = '<STR_LIT>' ) ] , <EOL> [ images ] , <EOL> Images2Neibs <EOL> ) <EOL> shape = ( <NUM_LIT:100> , <NUM_LIT> , <NUM_LIT:6> , <NUM_LIT:7> ) <EOL> images = numpy . ones ( shape ) . astype ( '<STR_LIT>' ) <EOL> x = T . ftensor4 ( ) <EOL> f = self . _compile_and_check ( [ x ] , <EOL> [ images2neibs ( <EOL> x , neib_shape = ( <NUM_LIT:2> , <NUM_LIT:2> ) , <EOL> mode = '<STR_LIT>' ) ] , <EOL> [ images ] , <EOL> Images2Neibs <EOL> ) <EOL> shape = ( <NUM_LIT:100> , <NUM_LIT> , <NUM_LIT:5> , <NUM_LIT:10> ) <EOL> images = numpy . ones ( shape ) . astype ( '<STR_LIT>' ) <EOL> x = T . ftensor4 ( ) <EOL> f = self . _compile_and_check ( [ x ] , <EOL> [ images2neibs ( <EOL> x , neib_shape = ( <NUM_LIT:3> , <NUM_LIT:3> ) , <EOL> mode = '<STR_LIT>' ) ] , <EOL> [ images ] , <EOL> Images2Neibs <EOL> ) <EOL> if __name__ == '<STR_LIT:__main__>' : <EOL> unittest . main ( ) </s>
