Esempio n. 1
0
def test_conv3d_transpose_invalid():
    filters = 2
    stack_size = 3
    num_depth = 7
    num_row = 5
    num_col = 6
    padding = 'valid'

    # Test invalid use case
    with pytest.raises(ValueError):
        model = Sequential([
            convolutional.Conv3DTranspose(filters=filters,
                                          kernel_size=3,
                                          padding=padding,
                                          batch_input_shape=(None, None, 5,
                                                             None, None))
        ])

    # Test invalid output padding for given stride. Output padding equal
    # to stride
    with pytest.raises(ValueError):
        model = Sequential([
            convolutional.Conv3DTranspose(filters=filters,
                                          kernel_size=3,
                                          padding=padding,
                                          output_padding=(0, 3, 3),
                                          strides=(1, 3, 4),
                                          batch_input_shape=(None, num_depth,
                                                             num_row, num_col,
                                                             stack_size))
        ])

    # Output padding greater than stride
    with pytest.raises(ValueError):
        model = Sequential([
            convolutional.Conv3DTranspose(filters=filters,
                                          kernel_size=3,
                                          padding=padding,
                                          output_padding=(2, 2, 3),
                                          strides=(1, 3, 4),
                                          batch_input_shape=(None, num_depth,
                                                             num_row, num_col,
                                                             stack_size))
        ])
Esempio n. 2
0
def test_conv3d_transpose():
    filters = 2
    stack_size = 3
    num_depth = 7
    num_row = 5
    num_col = 6

    for padding in _convolution_paddings:
        for strides in [(1, 1, 1), (2, 2, 2)]:
            for data_format in ['channels_first', 'channels_last']:
                if padding == 'same' and strides != (1, 1, 1):
                    continue
                layer_test(convolutional.Conv3DTranspose,
                           kwargs={
                               'filters': filters,
                               'kernel_size': 3,
                               'padding': padding,
                               'strides': strides,
                               'data_format': data_format
                           },
                           input_shape=(None, num_depth, num_row, num_col,
                                        stack_size),
                           fixed_batch_size=True)

    layer_test(convolutional.Conv3DTranspose,
               kwargs={
                   'filters': filters,
                   'kernel_size': 3,
                   'padding': padding,
                   'data_format': 'channels_first',
                   'activation': None,
                   'kernel_regularizer': 'l2',
                   'bias_regularizer': 'l2',
                   'activity_regularizer': 'l2',
                   'kernel_constraint': 'max_norm',
                   'bias_constraint': 'max_norm',
                   'use_bias': True,
                   'strides': strides
               },
               input_shape=(None, stack_size, num_depth, num_row, num_col),
               fixed_batch_size=True)

    # Test invalid use case
    with pytest.raises(ValueError):
        model = Sequential([
            convolutional.Conv3DTranspose(filters=filters,
                                          kernel_size=3,
                                          padding=padding,
                                          batch_input_shape=(None, None, 5,
                                                             None, None))
        ])