def test_space_to_depth(self): program = Program() with program_guard(program): data = layers.data(name='data', shape=[32, 9, 6, 6], append_batch_size=False, dtype='float32') self.assertIsNotNone(layers.space_to_depth(data, 3)) print(str(program))
def test_batch_norm(self): program = Program() with program_guard(program): data = layers.data(name='data', shape=[32, 128, 128], dtype="float32") out = layers.batch_norm(data) print(str(program))
def test_pool2d(self): program = Program() with program_guard(program): x = layers.data(name='x', shape=[3, 224, 224], dtype='float32') self.assertIsNotNone( layers.pool2d(x, pool_size=[5, 3], pool_stride=[1, 2], pool_padding=(2, 1)))
def test_manual_seed(self): local_program = Program() local_main_prog = default_main_program() local_start_prog = default_startup_program() self.assertEqual(0, local_program.random_seed) self.assertEqual(0, local_main_prog.random_seed) self.assertEqual(0, local_start_prog.random_seed) manual_seed(102) global_program1 = Program() global_program2 = Program() global_main_prog = default_main_program() global_start_prog = default_startup_program() self.assertEqual(102, global_program1.random_seed) self.assertEqual(102, global_program2.random_seed) self.assertEqual(102, global_main_prog.random_seed) self.assertEqual(102, global_start_prog.random_seed)
def test_bilinear_tensor_product_layer(self): program = Program() with program_guard(program): data = layers.data(name='data', shape=[4], dtype="float32") theta = layers.data(name="theta", shape=[5], dtype="float32") out = layers.bilinear_tensor_product(data, theta, 6) print(str(program))
def test_gaussian_random_batch_size_like(self): program = Program() with program_guard(program): input = layers.data(name="input", shape=[13, 11], dtype='float32') out = layers.gaussian_random_batch_size_like( input, shape=[-1, 11], mean=1.0, std=2.0) self.assertIsNotNone(out) print(str(program))
def test_grad(self): place = core.CPUPlace() program = Program() with program_guard(program): x = layers.data(name='x', shape=[1], dtype='float32', stop_gradient=False) y = layers.data(name='y', shape=[1], dtype='bool', stop_gradient=False) level = 0 out_true, out_false = split_lod_tensor(input=x, mask=y, level=level) out = merge_lod_tensor(in_true=out_true, in_false=out_false, mask=y, x=x, level=level) mean = layers.mean(out) append_backward(mean) tensor = core.LoDTensor() tensor.set(np.arange(10).reshape(10, 1).astype('float32'), place) tensor.set_recursive_sequence_lengths([[3, 6, 1]]) mask_np = np.array([0, 1, 0]).astype('bool') mask_np = np.expand_dims(mask_np, axis=1) mask = core.LoDTensor() mask.set(mask_np, place) exe = Executor(place) scope = core.Scope() g_vars = program.global_block().var(x.name + "@GRAD") g_out = [ item.sum() for item in map( np.array, exe.run(program, feed={ 'x': tensor, 'y': mask }, fetch_list=[g_vars], scope=scope, return_numpy=False)) ] g_out_sum = np.array(g_out).sum() self.assertAlmostEqual(1.0, g_out_sum, delta=0.1)
def test_roi_perspective_transform(self): program = Program() with program_guard(program): x = layers.data(name="x", shape=[256, 30, 30], dtype="float32") rois = layers.data( name="rois", shape=[8], dtype="float32", lod_level=1) output = layers.roi_perspective_transform(x, rois, 7, 7, 0.6) self.assertIsNotNone(output) print(str(program))
def test_roi_align(self): program = Program() with program_guard(program): x = layers.data(name="x", shape=[256, 30, 30], dtype="float32") rois = layers.data( name="rois", shape=[4], dtype="float32", lod_level=1) output = layers.roi_align(x, rois, 14, 14, 0.5, 2) self.assertIsNotNone(output) print(str(program))
def test_label_smooth(self): program = Program() with program_guard(program): label = layers.data(name="label", shape=[1], dtype="float32") one_hot_label = layers.one_hot(input=label, depth=10) smooth_label = layers.label_smooth( label=one_hot_label, epsilon=0.1, dtype="float32") self.assertIsNotNone(smooth_label) print(str(program))
def static_graph(self): paddle.enable_static() scope = fluid.core.Scope() program = Program() with fluid.scope_guard(scope): with fluid.program_guard(program): paddle.seed(self.seed) paddle.framework.random._manual_program_seed(self.seed) yield
def test_fluid_api(self): paddle.enable_static() dtypes = ['float16', 'float32'] for dtype in dtypes: prog = Program() startup_prog = Program() with program_guard(prog, startup_prog): data = np.random.random([1, 9, 9, 4]).astype(dtype) x = fluid.data(shape=[1, 9, -1, 4], dtype=dtype, name='x') triu_out = fluid.layers.triu(x) place = fluid.CUDAPlace(0) if fluid.core.is_compiled_with_cuda( ) else fluid.CPUPlace() exe = fluid.Executor(place) triu_out = exe.run(fluid.default_main_program(), feed={"x": data}, fetch_list=[triu_out])
def test_multiplex(self): program = Program() with program_guard(program): x1 = layers.data(name='x1', shape=[4], dtype='float32') x2 = layers.data(name='x2', shape=[4], dtype='float32') index = layers.data(name='index', shape=[1], dtype='int32') out = layers.multiplex(inputs=[x1, x2], index=index) self.assertIsNotNone(out) print(str(program))
def test_resize_nearest(self): program = Program() with program_guard(program): x = layers.data(name='x', shape=[3, 9, 6], dtype="float32") output = layers.resize_nearest(x, out_shape=[12, 12]) self.assertIsNotNone(output) output = layers.resize_nearest(x, scale=3) self.assertIsNotNone(output) print(str(program))
def test_sigmoid_cross_entropy(self): program = Program() with program_guard(program): dat = layers.data(name='data', shape=[10], dtype='float32') lbl = layers.data(name='label', shape=[10], dtype='float32') self.assertIsNotNone( layers.sigmoid_cross_entropy_with_logits( x=dat, label=lbl)) print(str(program))
def test_shape(self): program = Program() with program_guard(program): input = layers.data(name="input", shape=[3, 100, 100], dtype="float32") out = layers.shape(input) self.assertIsNotNone(out) print(str(program))
def test_flatten(self): program = Program() with program_guard(program): x = layers.data(name='x', append_batch_size=False, shape=[4, 4, 3], dtype="float32") out = layers.flatten(x, axis=1, name="flatten") self.assertIsNotNone(out)
def test_sequence_enumerate(self): program = Program() with program_guard(program): x = layers.data(name="input", shape=[1], dtype='int32', lod_level=1) out = layers.sequence_enumerate(input=x, win_size=2, pad_value=0) print(str(program))
def test_yolo_box(self): program = Program() with program_guard(program): x = layers.data(name='x', shape=[30, 7, 7], dtype='float32') img_size = layers.data(name='img_size', shape=[2], dtype='int32') boxes, scores = layers.yolo_box(x, img_size, [10, 13, 30, 13], 10, 0.01, 32) self.assertIsNotNone(boxes) self.assertIsNotNone(scores)
def test_hsigmoid(self): program = Program() with program_guard(program): x = layers.data(name='x', shape=[2], dtype='float32') y = layers.data(name='y', shape=[2], dtype='int64') self.assertIsNotNone( layers.hsigmoid( input=x, label=y, num_classes=2)) print(str(program))
def test_while_loop_backward2(self): def cond(i, x): return i < 3 def body(i, x): x = x * i i = i + 1 return [i, x] main_program = Program() startup_program = Program() with fluid.program_guard(main_program, startup_program): i = fluid.data(name='i', shape=[1], dtype='float32') i.stop_gradient = False x = fluid.data(name='x', shape=[1], dtype='float32') x.stop_gradient = False out = layers.while_loop(cond, body, [i, x]) mean = layers.mean(out[1]) append_backward(mean) place = fluid.CUDAPlace( 0) if core.is_compiled_with_cuda() else fluid.CPUPlace() exe = fluid.Executor(place) feed_i = np.ones(1).astype('float32') feed_x = np.ones(1).astype('float32') data = np.asarray([2]).astype('float32') i_grad = np.asarray([3]).astype('float32') x_grad = np.asarray([2]).astype('float32') res = exe.run(main_program, feed={ 'i': feed_i, 'x': feed_x }, fetch_list=[mean.name, i.grad_name, x.grad_name]) self.assertTrue(np.allclose(np.asarray(res[0]), data)) self.assertTrue(np.allclose(np.asarray(res[1]), i_grad), msg=" \nres = \n{} \n\n ans = \n{}".format( res[1], i_grad)) self.assertTrue(np.allclose(np.asarray(res[2]), x_grad), msg=" \nres = \n{} \n\n ans = \n{}".format( res[2], x_grad))
def test_return_var_tuple(self): def fn_1(): return layers.fill_constant(shape=[1, 2], dtype='int32', value=1), layers.fill_constant( shape=[2, 3], dtype='float32', value=2) def fn_2(): return layers.fill_constant(shape=[3, 4], dtype='int32', value=3), layers.fill_constant( shape=[4, 5], dtype='float32', value=4) def fn_3(): return layers.fill_constant(shape=[5], dtype='int32', value=5), layers.fill_constant( shape=[5, 6], dtype='float32', value=6) main_program = Program() startup_program = Program() with program_guard(main_program, startup_program): x = layers.fill_constant(shape=[1], dtype='float32', value=1) y = layers.fill_constant(shape=[1], dtype='float32', value=1) z = layers.fill_constant(shape=[1], dtype='float32', value=3) pred_1 = layers.equal(x, y) # true pred_2 = layers.equal(x, z) # false out = layers.case(((pred_1, fn_1), (pred_2, fn_2)), fn_3) place = fluid.CUDAPlace( 0) if core.is_compiled_with_cuda() else fluid.CPUPlace() exe = fluid.Executor(place) ret = exe.run(main_program, fetch_list=out) self.assertTrue( np.allclose(np.asarray(ret[0]), np.full((1, 2), 1, np.int32))) self.assertTrue( np.allclose(np.asarray(ret[1]), np.full((2, 3), 2, np.float32)))
def test_errors(self): with program_guard(Program(), Program()): ids = fluid.layers.data(name='ids', shape=[5, 2, 2], dtype='int64', append_batch_size=False) parents = fluid.layers.data(name='parents', shape=[5, 2, 2], dtype='int64', append_batch_size=False) def test_Variable_ids(): # the input type must be Variable np_ids = np.random.random((5, 2, 2), dtype='int64') fluid.layers.gather_tree(np_ids, parents) self.assertRaises(TypeError, test_Variable_ids) def test_Variable_parents(): # the input type must be Variable np_parents = np.random.random((5, 2, 2), dtype='int64') fluid.layers.gather_tree(ids, np_parents) self.assertRaises(TypeError, test_Variable_parents) def test_type_ids(): # dtype must be int32 or int64 bad_ids = fluid.layers.data(name='bad_ids', shape=[5, 2, 2], dtype='float32', append_batch_size=False) fluid.layers.gather_tree(bad_ids, parents) self.assertRaises(TypeError, test_type_ids) def test_type_parents(): # dtype must be int32 or int64 bad_parents = fluid.layers.data(name='bad_parents', shape=[5, 2, 2], dtype='float32', append_batch_size=False) fluid.layers.gather_tree(ids, bad_parents) self.assertRaises(TypeError, test_type_parents)
def test_im2sequence(self): print("test_im2sequence") program = Program() with program_guard(program): x = layers.data(name='x', shape=[3, 128, 128], dtype='float32') output = layers.im2sequence(input=x, stride=[1, 1], filter_size=[2, 2]) self.assertIsNotNone(output) print(str(program))
def test_box_clip(self): program = Program() with program_guard(program): input_box = layers.data(name='input_box', shape=[7, 4], dtype='float32', lod_level=1) im_info = layers.data(name='im_info', shape=[3], dtype='float32') out = layers.box_clip(input_box, im_info) self.assertIsNotNone(out)
def test_input_type_error(self): main_program = Program() startup_program = Program() with program_guard(main_program, startup_program): src = layers.data(name='data', shape=[1], dtype='float32') const_value = layers.fill_constant( [1], dtype='float32', value=123.0) ifcond = layers.less_than(x=src, y=const_value) with self.assertRaises(TypeError): ie = layers.IfElse(set()) with self.assertRaises(TypeError): ie = layers.IfElse(ifcond, set()) with self.assertRaises(TypeError): ie = layers.IfElse(ifcond) with ie.true_block(): true_target = ie.input(src) true_target = fluid.layers.exp(true_target) ie.output([])
def _run_nce_op_two_pserver(self, place, port0, port1, model_file): scope = fluid.core.Scope() program = Program() with fluid.scope_guard(scope): with program_guard(program, startup_program=Program()): emaps = ['127.0.0.1:' + str(port0), '127.0.0.1:' + str(port1)] # create and run recv and save operator remote_recv_op = Operator("recv_save", trainer_id=0, shape=[10, 8], slice_shapes=["5,8", "5,8"], slice_varnames=["table", "table"], remote_varnames=['table', 'table'], is_sparse=False, endpoints=emaps, file_path=model_file) remote_recv_op.run(scope, place)
def test_sequence_expand(self): program = Program() with program_guard(program): x = layers.data(name='x', shape=[10], dtype='float32') y = layers.data(name='y', shape=[10, 20], dtype='float32', lod_level=2) self.assertIsNotNone(layers.sequence_expand(x=x, y=y, ref_level=1)) print(str(program))
def test_lod_reset(self): program = Program() with program_guard(program): x = layers.data(name='x', shape=[10], dtype='float32') y = layers.data(name='y', shape=[10, 20], dtype='float32', lod_level=2) print(layers.lod_reset(x=x, y=y)) print(str(program))
def test_sequence_softmax(self): program = Program() with program_guard(program): seq_data = layers.data(name='seq_data', shape=[10, 10], dtype='float32', lod_level=1) seq = layers.fc(input=seq_data, size=20) self.assertIsNotNone(layers.sequence_softmax(seq)) print(str(program))