@@ -61,7 +61,7 @@ def test_step_scopes(self):
61
61
name = 'step_scopes' , type = core .VarDesc .VarType .STEP_SCOPES )
62
62
self .assertEqual (core .VarDesc .VarType .STEP_SCOPES , var .type )
63
63
64
- def _test_slice (self ):
64
+ def _test_slice (self , place ):
65
65
b = default_main_program ().current_block ()
66
66
w = b .create_var (dtype = "float64" , shape = [784 , 100 , 100 ], lod_level = 0 )
67
67
@@ -83,7 +83,6 @@ def _test_slice(self):
83
83
84
84
self .assertEqual (0 , nw .lod_level )
85
85
86
- place = fluid .CPUPlace ()
87
86
main = fluid .Program ()
88
87
with fluid .program_guard (main ):
89
88
exe = fluid .Executor (place )
@@ -100,10 +99,23 @@ def _test_slice(self):
100
99
var6 = var [1 , 1 :, 1 :]
101
100
var7 = var [1 , ..., 1 :]
102
101
var8 = var [1 , ...]
102
+ var_reshape = fluid .layers .reshape (var , [3 , - 1 , 3 ])
103
+ var9 = var_reshape [1 , ..., 2 ]
104
+ var10 = var_reshape [:, :, - 1 ]
105
+
106
+ x = fluid .layers .data (name = 'x' , shape = [13 ], dtype = 'float32' )
107
+ y = fluid .layers .fc (input = x , size = 1 , act = None )
108
+ var11 = y [:, 0 ]
109
+ feeder = fluid .DataFeeder (place = place , feed_list = [x ])
110
+ data = []
111
+ data .append ((np .random .randint (10 , size = [13 ]).astype ('float32' )))
112
+ exe .run (fluid .default_startup_program ())
113
+
103
114
local_out = exe .run (main ,
115
+ feed = feeder .feed ([data ]),
104
116
fetch_list = [
105
117
var , var1 , var2 , var3 , var4 , var5 , var6 ,
106
- var7 , var8
118
+ var7 , var8 , var9 , var10 , var11
107
119
])
108
120
109
121
self .assertTrue ((np .array (local_out [1 ]) == np .array (tensor_array [
@@ -122,38 +134,16 @@ def _test_slice(self):
122
134
1 , ..., 1 :])).all ())
123
135
self .assertTrue ((np .array (local_out [8 ]) == np .array (tensor_array [
124
136
1 , ...])).all ())
137
+ self .assertEqual (local_out [9 ].shape , (1 , 3 , 1 ))
138
+ self .assertEqual (local_out [10 ].shape , (3 , 3 , 1 ))
139
+ self .assertEqual (local_out [11 ].shape , (1 , 1 ))
125
140
126
141
def test_slice (self ):
127
- self ._test_slice ()
128
-
129
-
130
- class TestVariableImperative (unittest .TestCase ):
131
- def _test_slice (self ):
132
- b = default_main_program ().current_block ()
133
- w = b .create_var (dtype = "float64" , shape = [784 , 100 , 100 ], lod_level = 0 )
134
-
135
- for i in range (3 ):
136
- nw = w [i ]
137
- self .assertEqual ([1 , 100 , 100 ], nw .shape )
138
-
139
- nw = w [:]
140
- self .assertEqual ([784 , 100 , 100 ], nw .shape )
141
-
142
- nw = w [:, :, :]
143
- self .assertEqual ([784 , 100 , 100 ], nw .shape )
144
-
145
- nw = w [::2 , ::2 , :]
146
- self .assertEqual ([392 , 50 , 100 ], nw .shape )
147
-
148
- nw = w [::- 2 , ::- 2 , :]
149
- self .assertEqual ([392 , 50 , 100 ], nw .shape )
150
-
151
- nw = w [0 ::- 2 , 0 ::- 2 , :]
152
- self .assertEqual ([1 , 1 , 100 ], nw .shape )
142
+ place = fluid .CPUPlace ()
143
+ self ._test_slice (place )
153
144
154
- def test_slice (self ):
155
- with fluid .dygraph .guard ():
156
- self ._test_slice ()
145
+ if core .is_compiled_with_cuda ():
146
+ self ._test_slice (core .CUDAPlace (0 ))
157
147
158
148
159
149
if __name__ == '__main__' :
0 commit comments