@@ -31,7 +31,7 @@ def setUp(self):
3131 self .get_inputs_and_outputs ()
3232
3333 def get_dtype (self ):
34- return "float32 "
34+ return "float64 "
3535
3636 def get_inputs_and_outputs (self ):
3737 self .A = np .random .random ((2 , 8 )).astype (self .dtype )
@@ -43,8 +43,8 @@ def test_check_output(self):
4343 self .check_output ()
4444
4545 def test_check_grad (self ):
46- self .check_grad (['x0' ], 'Out' , max_relative_error = 1e-3 )
47- self .check_grad (['x1' ], 'Out' , max_relative_error = 1e-3 )
46+ self .check_grad (['x0' ], 'Out' )
47+ self .check_grad (['x1' ], 'Out' )
4848
4949
5050class TestMultiDotOpDouble (TestMultiDotOp ):
@@ -62,9 +62,9 @@ def get_inputs_and_outputs(self):
6262 self .outputs = {'Out' : multi_dot ([self .A , self .B , self .C ])}
6363
6464 def test_check_grad (self ):
65- self .check_grad (['x0' ], 'Out' , max_relative_error = 1e-3 )
66- self .check_grad (['x1' ], 'Out' , max_relative_error = 1e-3 )
67- self .check_grad (['x2' ], 'Out' , max_relative_error = 1e-3 )
65+ self .check_grad (['x0' ], 'Out' )
66+ self .check_grad (['x1' ], 'Out' )
67+ self .check_grad (['x2' ], 'Out' )
6868
6969
7070#A*(B*C)
@@ -77,9 +77,9 @@ def get_inputs_and_outputs(self):
7777 self .outputs = {'Out' : multi_dot ([self .A , self .B , self .C ])}
7878
7979 def test_check_grad (self ):
80- self .check_grad (['x0' ], 'Out' , max_relative_error = 1e-3 )
81- self .check_grad (['x1' ], 'Out' , max_relative_error = 1e-3 )
82- self .check_grad (['x2' ], 'Out' , max_relative_error = 1e-3 )
80+ self .check_grad (['x0' ], 'Out' )
81+ self .check_grad (['x1' ], 'Out' )
82+ self .check_grad (['x2' ], 'Out' )
8383
8484
8585class TestMultiDotOp4Mat (TestMultiDotOp ):
@@ -95,10 +95,10 @@ def get_inputs_and_outputs(self):
9595 self .outputs = {'Out' : multi_dot ([self .A , self .B , self .C , self .D ])}
9696
9797 def test_check_grad (self ):
98- self .check_grad (['x0' ], 'Out' , max_relative_error = 1e-3 )
99- self .check_grad (['x1' ], 'Out' , max_relative_error = 1e-3 )
100- self .check_grad (['x2' ], 'Out' , max_relative_error = 1e-3 )
101- self .check_grad (['x3' ], 'Out' , max_relative_error = 1e-3 )
98+ self .check_grad (['x0' ], 'Out' )
99+ self .check_grad (['x1' ], 'Out' )
100+ self .check_grad (['x2' ], 'Out' )
101+ self .check_grad (['x3' ], 'Out' )
102102
103103
104104class TestMultiDotOpFirst1D (TestMultiDotOp ):
@@ -118,9 +118,9 @@ def get_inputs_and_outputs(self):
118118 self .outputs = {'Out' : multi_dot ([self .A , self .B , self .C ])}
119119
120120 def test_check_grad (self ):
121- self .check_grad (['x0' ], 'Out' , max_relative_error = 1e-3 )
122- self .check_grad (['x1' ], 'Out' , max_relative_error = 1e-3 )
123- self .check_grad (['x2' ], 'Out' , max_relative_error = 1e-3 )
121+ self .check_grad (['x0' ], 'Out' )
122+ self .check_grad (['x1' ], 'Out' )
123+ self .check_grad (['x2' ], 'Out' )
124124
125125
126126class TestMultiDotOp4MatFirst1D (TestMultiDotOp ):
@@ -136,10 +136,10 @@ def get_inputs_and_outputs(self):
136136 self .outputs = {'Out' : multi_dot ([self .A , self .B , self .C , self .D ])}
137137
138138 def test_check_grad (self ):
139- self .check_grad (['x0' ], 'Out' , max_relative_error = 1e-3 )
140- self .check_grad (['x1' ], 'Out' , max_relative_error = 1e-3 )
141- self .check_grad (['x2' ], 'Out' , max_relative_error = 1e-3 )
142- self .check_grad (['x3' ], 'Out' , max_relative_error = 1e-3 )
139+ self .check_grad (['x0' ], 'Out' )
140+ self .check_grad (['x1' ], 'Out' )
141+ self .check_grad (['x2' ], 'Out' )
142+ self .check_grad (['x3' ], 'Out' )
143143
144144
145145class TestMultiDotOpLast1D (TestMultiDotOp ):
@@ -159,9 +159,9 @@ def get_inputs_and_outputs(self):
159159 self .outputs = {'Out' : multi_dot ([self .A , self .B , self .C ])}
160160
161161 def test_check_grad (self ):
162- self .check_grad (['x0' ], 'Out' , max_relative_error = 1e-3 )
163- self .check_grad (['x1' ], 'Out' , max_relative_error = 1e-3 )
164- self .check_grad (['x2' ], 'Out' , max_relative_error = 1e-3 )
162+ self .check_grad (['x0' ], 'Out' )
163+ self .check_grad (['x1' ], 'Out' )
164+ self .check_grad (['x2' ], 'Out' )
165165
166166
167167class TestMultiDotOp4MatLast1D (TestMultiDotOp ):
@@ -177,10 +177,10 @@ def get_inputs_and_outputs(self):
177177 self .outputs = {'Out' : multi_dot ([self .A , self .B , self .C , self .D ])}
178178
179179 def test_check_grad (self ):
180- self .check_grad (['x0' ], 'Out' , max_relative_error = 1e-3 )
181- self .check_grad (['x1' ], 'Out' , max_relative_error = 1e-3 )
182- self .check_grad (['x2' ], 'Out' , max_relative_error = 1e-3 )
183- self .check_grad (['x3' ], 'Out' , max_relative_error = 1e-3 )
180+ self .check_grad (['x0' ], 'Out' )
181+ self .check_grad (['x1' ], 'Out' )
182+ self .check_grad (['x2' ], 'Out' )
183+ self .check_grad (['x3' ], 'Out' )
184184
185185
186186class TestMultiDotOpFirstAndLast1D (TestMultiDotOp ):
@@ -191,8 +191,8 @@ def get_inputs_and_outputs(self):
191191 self .outputs = {'Out' : multi_dot ([self .A , self .B ])}
192192
193193 def test_check_grad (self ):
194- self .check_grad (['x0' ], 'Out' , max_relative_error = 1e-3 )
195- self .check_grad (['x1' ], 'Out' , max_relative_error = 1e-3 )
194+ self .check_grad (['x0' ], 'Out' )
195+ self .check_grad (['x1' ], 'Out' )
196196
197197
198198class TestMultiDotOp3MatFirstAndLast1D (TestMultiDotOp ):
@@ -204,9 +204,9 @@ def get_inputs_and_outputs(self):
204204 self .outputs = {'Out' : multi_dot ([self .A , self .B , self .C ])}
205205
206206 def test_check_grad (self ):
207- self .check_grad (['x0' ], 'Out' , max_relative_error = 1e-3 )
208- self .check_grad (['x1' ], 'Out' , max_relative_error = 1e-3 )
209- self .check_grad (['x2' ], 'Out' , max_relative_error = 1e-3 )
207+ self .check_grad (['x0' ], 'Out' )
208+ self .check_grad (['x1' ], 'Out' )
209+ self .check_grad (['x2' ], 'Out' )
210210
211211
212212class TestMultiDotOp4MatFirstAndLast1D (TestMultiDotOp ):
@@ -222,10 +222,10 @@ def get_inputs_and_outputs(self):
222222 self .outputs = {'Out' : multi_dot ([self .A , self .B , self .C , self .D ])}
223223
224224 def test_check_grad (self ):
225- self .check_grad (['x0' ], 'Out' , max_relative_error = 1e-3 )
226- self .check_grad (['x1' ], 'Out' , max_relative_error = 1e-3 )
227- self .check_grad (['x2' ], 'Out' , max_relative_error = 1e-3 )
228- self .check_grad (['x3' ], 'Out' , max_relative_error = 1e-3 )
225+ self .check_grad (['x0' ], 'Out' )
226+ self .check_grad (['x1' ], 'Out' )
227+ self .check_grad (['x2' ], 'Out' )
228+ self .check_grad (['x3' ], 'Out' )
229229
230230
231231#####python API test#######
@@ -236,41 +236,41 @@ def test_errors(self):
236236 input1 = 12
237237 self .assertRaises (TypeError , paddle .multi_dot , [input1 , input1 ])
238238
239- # The inputs dtype of multi_dot must be float32 , float64 or float16.
239+ # The inputs dtype of multi_dot must be float64 , float64 or float16.
240240 input2 = fluid .layers .data (
241241 name = 'input2' , shape = [10 , 10 ], dtype = "int32" )
242242 self .assertRaises (TypeError , paddle .multi_dot , [input2 , input2 ])
243243
244244 # the number of tensor must be larger than 1
245- x0 = fluid .data (name = 'x0' , shape = [3 , 2 ], dtype = "float32 " )
245+ x0 = fluid .data (name = 'x0' , shape = [3 , 2 ], dtype = "float64 " )
246246 self .assertRaises (ValueError , paddle .multi_dot , [x0 ])
247247
248248 #the first tensor must be 1D or 2D
249- x1 = fluid .data (name = 'x1' , shape = [3 , 2 , 3 ], dtype = "float32 " )
250- x2 = fluid .data (name = 'x2' , shape = [3 , 2 ], dtype = "float32 " )
249+ x1 = fluid .data (name = 'x1' , shape = [3 , 2 , 3 ], dtype = "float64 " )
250+ x2 = fluid .data (name = 'x2' , shape = [3 , 2 ], dtype = "float64 " )
251251 self .assertRaises (ValueError , paddle .multi_dot , [x1 , x2 ])
252252
253253 #the last tensor must be 1D or 2D
254- x3 = fluid .data (name = 'x3' , shape = [3 , 2 ], dtype = "float32 " )
255- x4 = fluid .data (name = 'x4' , shape = [3 , 2 , 2 ], dtype = "float32 " )
254+ x3 = fluid .data (name = 'x3' , shape = [3 , 2 ], dtype = "float64 " )
255+ x4 = fluid .data (name = 'x4' , shape = [3 , 2 , 2 ], dtype = "float64 " )
256256 self .assertRaises (ValueError , paddle .multi_dot , [x3 , x4 ])
257257
258258 #the tensor must be 2D, except first and last tensor
259- x5 = fluid .data (name = 'x5' , shape = [3 , 2 ], dtype = "float32 " )
260- x6 = fluid .data (name = 'x6' , shape = [2 ], dtype = "float32 " )
261- x7 = fluid .data (name = 'x7' , shape = [2 , 2 ], dtype = "float32 " )
259+ x5 = fluid .data (name = 'x5' , shape = [3 , 2 ], dtype = "float64 " )
260+ x6 = fluid .data (name = 'x6' , shape = [2 ], dtype = "float64 " )
261+ x7 = fluid .data (name = 'x7' , shape = [2 , 2 ], dtype = "float64 " )
262262 self .assertRaises (ValueError , paddle .multi_dot , [x5 , x6 , x7 ])
263263
264264
265265class API_TestMultiDot (unittest .TestCase ):
266266 def test_out (self ):
267267 with fluid .program_guard (fluid .Program ()):
268- x0 = fluid .data (name = 'x0' , shape = [3 , 2 ], dtype = "float32 " )
269- x1 = fluid .data (name = 'x1' , shape = [2 , 3 ], dtype = 'float32 ' )
268+ x0 = fluid .data (name = 'x0' , shape = [3 , 2 ], dtype = "float64 " )
269+ x1 = fluid .data (name = 'x1' , shape = [2 , 3 ], dtype = 'float64 ' )
270270 result = paddle .multi_dot ([x0 , x1 ])
271271 exe = fluid .Executor (fluid .CPUPlace ())
272- data1 = np .random .rand (3 , 2 ).astype ("float32 " )
273- data2 = np .random .rand (2 , 3 ).astype ("float32 " )
272+ data1 = np .random .rand (3 , 2 ).astype ("float64 " )
273+ data2 = np .random .rand (2 , 3 ).astype ("float64 " )
274274 np_res = exe .run (feed = {'x0' : data1 ,
275275 'x1' : data2 },
276276 fetch_list = [result ])
0 commit comments