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)
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
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)