示例#1
0
def test_cropping_2d():
    num_samples = 2
    stack_size = 2
    input_len_dim1 = 9
    input_len_dim2 = 9
    cropping = ((2, 2), (3, 3))

    for data_format in ['channels_first', 'channels_last']:
        if data_format == 'channels_first':
            inputs = np.random.rand(num_samples, stack_size, input_len_dim1,
                                    input_len_dim2)
        else:
            inputs = np.random.rand(num_samples, input_len_dim1,
                                    input_len_dim2, stack_size)
        # basic test
        layer_test(convolutional.Cropping2D,
                   kwargs={
                       'cropping': cropping,
                       'data_format': data_format
                   },
                   input_shape=inputs.shape)
        # correctness test
        layer = convolutional.Cropping2D(cropping=cropping,
                                         data_format=data_format)
        layer.build(inputs.shape)
        outputs = layer(K.variable(inputs))
        np_output = K.eval(outputs)
        # compare with numpy
        if data_format == 'channels_first':
            expected_out = inputs[:, :, cropping[0][0]:-cropping[0][1],
                                  cropping[1][0]:-cropping[1][1]]
        else:
            expected_out = inputs[:, cropping[0][0]:-cropping[0][1],
                                  cropping[1][0]:-cropping[1][1], :]
        assert_allclose(np_output, expected_out)

    for data_format in ['channels_first', 'channels_last']:
        if data_format == 'channels_first':
            inputs = np.random.rand(num_samples, stack_size, input_len_dim1,
                                    input_len_dim2)
        else:
            inputs = np.random.rand(num_samples, input_len_dim1,
                                    input_len_dim2, stack_size)
        # another correctness test (no cropping)
        cropping = ((0, 0), (0, 0))
        layer = convolutional.Cropping2D(cropping=cropping,
                                         data_format=data_format)
        layer.build(inputs.shape)
        outputs = layer(K.variable(inputs))
        np_output = K.eval(outputs)
        # compare with input
        assert_allclose(np_output, inputs)

    # Test invalid use cases
    with pytest.raises(ValueError):
        layer = convolutional.Cropping2D(cropping=((1, 1), ))
    with pytest.raises(ValueError):
        layer = convolutional.Cropping2D(cropping=lambda x: x)
示例#2
0
def make_model():
    network = Sequential()
    network.add(
        Lambda(lambda pixel: pixel / 255 - 0.5, input_shape=(160, 320, 3)))
    network.add(convolutional.Cropping2D(cropping=((70, 25), (0, 0))))
    network.add(
        convolutional.Convolution2D(24,
                                    5,
                                    5,
                                    activation='relu',
                                    subsample=(2, 2)))
    network.add(
        convolutional.Convolution2D(36,
                                    5,
                                    5,
                                    activation='relu',
                                    subsample=(2, 2)))
    network.add(
        convolutional.Convolution2D(48,
                                    5,
                                    5,
                                    activation='relu',
                                    subsample=(2, 2)))
    network.add(convolutional.Convolution2D(64, 3, 3, activation='relu'))
    network.add(convolutional.Convolution2D(64, 3, 3, activation='relu'))
    network.add(Flatten())
    network.add(Dense(100))
    network.add(Dense(50))
    network.add(Dense(10))
    network.add(Dense(1))
    return network
示例#3
0
def test_cropping_2d():
    nb_samples = 2
    stack_size = 2
    input_len_dim1 = 8
    input_len_dim2 = 8
    cropping = ((2, 2), (3, 3))
    dim_ordering = K.image_dim_ordering()

    if dim_ordering == 'th':
        input = np.random.rand(nb_samples, stack_size, input_len_dim1,
                               input_len_dim2)
    else:
        input = np.random.rand(nb_samples, input_len_dim1, input_len_dim2,
                               stack_size)
    # basic test
    layer_test(convolutional.Cropping2D,
               kwargs={
                   'cropping': cropping,
                   'dim_ordering': dim_ordering
               },
               input_shape=input.shape)
    # correctness test
    layer = convolutional.Cropping2D(cropping=cropping,
                                     dim_ordering=dim_ordering)
    layer.build(input.shape)
    output = layer(K.variable(input))
    np_output = K.eval(output)
    # compare with numpy
    if dim_ordering == 'th':
        expected_out = input[:, :, cropping[0][0]:-cropping[0][1],
                             cropping[1][0]:-cropping[1][1]]
    else:
        expected_out = input[:, cropping[0][0]:-cropping[0][1],
                             cropping[1][0]:-cropping[1][1], :]
    assert_allclose(np_output, expected_out)