def _test_concat_with_three_tensor_backward(test_case, device): input1 = flow.Tensor( np.random.randn(2, 6, 5, 3), dtype=flow.float32, device=flow.device(device), requires_grad=True, ) input2 = flow.Tensor( np.random.randn(2, 6, 5, 3), dtype=flow.float32, device=flow.device(device), requires_grad=True, ) input3 = flow.Tensor( np.random.randn(2, 6, 5, 3), dtype=flow.float32, device=flow.device(device), requires_grad=True, ) of_out = flow.cat([input1, input2, input3], dim=1) of_out = of_out.sum() of_out.backward() test_case.assertTrue( np.allclose(input1.grad.numpy(), np.ones((2, 6, 5, 3)), 1e-4, 1e-4)) test_case.assertTrue( np.allclose(input2.grad.numpy(), np.ones((2, 6, 5, 3)), 1e-4, 1e-4)) test_case.assertTrue( np.allclose(input3.grad.numpy(), np.ones((2, 6, 5, 3)), 1e-4, 1e-4))
def test_concat_with_axis_one(test_case): input1 = flow.Tensor(np.random.randn(2, 6, 5, 3), dtype=flow.float32) input2 = flow.Tensor(np.random.randn(2, 6, 5, 3), dtype=flow.float32) of_out = flow.cat([input1, input2], dim=1) np_out = np.concatenate((input1.numpy(), input2.numpy()), axis=1) test_case.assertTrue(np.array_equal(of_out.numpy(), np_out))
def _test_concat_origin(test_case, device): input1 = flow.Tensor(np.random.randn(2, 6, 5, 3), dtype=flow.float32, device=flow.device(device)) input2 = flow.Tensor(np.random.randn(2, 6, 5, 3), dtype=flow.float32, device=flow.device(device)) of_out = flow.cat([input1, input2], dim=0) np_out = np.concatenate((input1.numpy(), input2.numpy()), axis=0) test_case.assertTrue(np.array_equal(of_out.numpy(), np_out))