def test_upsampling_3d():
    nb_samples = 9
    stack_size = 7
    input_len_dim1 = 10
    input_len_dim2 = 11
    input_len_dim3 = 12

    for dim_ordering in ['th', 'tf']:
        if dim_ordering == 'th':
            input = np.random.rand(nb_samples, stack_size, input_len_dim1,
                                   input_len_dim2, input_len_dim3)
        else:  # tf
            input = np.random.rand(nb_samples, input_len_dim1, input_len_dim2,
                                   input_len_dim3, stack_size)
        for length_dim1 in [2, 3, 9]:
            for length_dim2 in [2, 3, 9]:
                for length_dim3 in [2, 3, 9]:
                    layer = convolutional.UpSampling3D(
                        size=(length_dim1, length_dim2, length_dim3),
                        input_shape=input.shape[1:],
                        dim_ordering=dim_ordering)
                    layer.input = K.variable(input)
                    for train in [True, False]:
                        out = K.eval(layer.get_output(train))
                        if dim_ordering == 'th':
                            assert out.shape[2] == length_dim1 * input_len_dim1
                            assert out.shape[3] == length_dim2 * input_len_dim2
                            assert out.shape[4] == length_dim3 * input_len_dim3
                        else:  # tf
                            assert out.shape[1] == length_dim1 * input_len_dim1
                            assert out.shape[2] == length_dim2 * input_len_dim2
                            assert out.shape[3] == length_dim3 * input_len_dim3

                        # compare with numpy
                        if dim_ordering == 'th':
                            expected_out = np.repeat(input,
                                                     length_dim1,
                                                     axis=2)
                            expected_out = np.repeat(expected_out,
                                                     length_dim2,
                                                     axis=3)
                            expected_out = np.repeat(expected_out,
                                                     length_dim3,
                                                     axis=4)
                        else:  # tf
                            expected_out = np.repeat(input,
                                                     length_dim1,
                                                     axis=1)
                            expected_out = np.repeat(expected_out,
                                                     length_dim2,
                                                     axis=2)
                            expected_out = np.repeat(expected_out,
                                                     length_dim3,
                                                     axis=3)

                        assert_allclose(out, expected_out)

                    layer.get_config()
Example #2
0
def test_upsampling_3d():
    nb_samples = 2
    stack_size = 2
    input_len_dim1 = 10
    input_len_dim2 = 11
    input_len_dim3 = 12

    for dim_ordering in ['th', 'tf']:
        if dim_ordering == 'th':
            input = np.random.rand(nb_samples, stack_size, input_len_dim1,
                                   input_len_dim2, input_len_dim3)
        else:  # tf
            input = np.random.rand(nb_samples, input_len_dim1, input_len_dim2,
                                   input_len_dim3, stack_size)
        for length_dim1 in [2, 3, 9]:
            for length_dim2 in [2, 3, 9]:
                for length_dim3 in [2, 3, 9]:
                    layer = convolutional.UpSampling3D(
                        size=(length_dim1, length_dim2, length_dim3),
                        dim_ordering=dim_ordering)
                    layer.build(input.shape)
                    output = layer(K.variable(input))
                    np_output = K.eval(output)
                    if dim_ordering == 'th':
                        assert np_output.shape[
                            2] == length_dim1 * input_len_dim1
                        assert np_output.shape[
                            3] == length_dim2 * input_len_dim2
                        assert np_output.shape[
                            4] == length_dim3 * input_len_dim3
                    else:  # tf
                        assert np_output.shape[
                            1] == length_dim1 * input_len_dim1
                        assert np_output.shape[
                            2] == length_dim2 * input_len_dim2
                        assert np_output.shape[
                            3] == length_dim3 * input_len_dim3

                    # compare with numpy
                    if dim_ordering == 'th':
                        expected_out = np.repeat(input, length_dim1, axis=2)
                        expected_out = np.repeat(expected_out,
                                                 length_dim2,
                                                 axis=3)
                        expected_out = np.repeat(expected_out,
                                                 length_dim3,
                                                 axis=4)
                    else:  # tf
                        expected_out = np.repeat(input, length_dim1, axis=1)
                        expected_out = np.repeat(expected_out,
                                                 length_dim2,
                                                 axis=2)
                        expected_out = np.repeat(expected_out,
                                                 length_dim3,
                                                 axis=3)

                    assert_allclose(np_output, expected_out)
def test_upsampling_3d(data_format):
    num_samples = 2
    stack_size = 2
    input_len_dim1 = 10
    input_len_dim2 = 11
    input_len_dim3 = 12

    if data_format == 'channels_first':
        inputs = np.random.rand(num_samples, stack_size, input_len_dim1,
                                input_len_dim2, input_len_dim3)
    else:  # tf
        inputs = np.random.rand(num_samples, input_len_dim1, input_len_dim2,
                                input_len_dim3, stack_size)

    # basic test
    layer_test(convolutional.UpSampling3D,
               kwargs={
                   'size': (2, 2, 2),
                   'data_format': data_format
               },
               input_shape=inputs.shape)

    for length_dim1 in [2, 3]:
        for length_dim2 in [2]:
            for length_dim3 in [3]:
                layer = convolutional.UpSampling3D(size=(length_dim1,
                                                         length_dim2,
                                                         length_dim3),
                                                   data_format=data_format)
                layer.build(inputs.shape)
                outputs = layer(K.variable(inputs))
                np_output = K.eval(outputs)
                if data_format == 'channels_first':
                    assert np_output.shape[2] == length_dim1 * input_len_dim1
                    assert np_output.shape[3] == length_dim2 * input_len_dim2
                    assert np_output.shape[4] == length_dim3 * input_len_dim3
                else:  # tf
                    assert np_output.shape[1] == length_dim1 * input_len_dim1
                    assert np_output.shape[2] == length_dim2 * input_len_dim2
                    assert np_output.shape[3] == length_dim3 * input_len_dim3

                # compare with numpy
                if data_format == 'channels_first':
                    expected_out = np.repeat(inputs, length_dim1, axis=2)
                    expected_out = np.repeat(expected_out, length_dim2, axis=3)
                    expected_out = np.repeat(expected_out, length_dim3, axis=4)
                else:  # tf
                    expected_out = np.repeat(inputs, length_dim1, axis=1)
                    expected_out = np.repeat(expected_out, length_dim2, axis=2)
                    expected_out = np.repeat(expected_out, length_dim3, axis=3)

                assert_allclose(np_output, expected_out)