Files
keras-contrib/tests/keras_contrib/layers/test_convolutional.py
T

81 lines
3.6 KiB
Python

import pytest
import numpy as np
from numpy.testing import assert_allclose
from keras.utils.test_utils import layer_test, keras_test
from keras.utils.np_utils import conv_input_length
from keras import backend as K
from keras_contrib import backend as KC
from keras_contrib.layers import convolutional, pooling
# TensorFlow does not support full convolution.
if K.backend() == 'theano':
_convolution_border_modes = ['valid', 'same', 'full']
else:
_convolution_border_modes = ['valid', 'same']
@keras_test
def test_deconvolution_3d():
nb_samples = 2
nb_filter = 2
stack_size = 3
kernel_dim1 = 10
kernel_dim2 = 6
kernel_dim3 = 5
for batch_size in [None, nb_samples]:
for border_mode in _convolution_border_modes:
for subsample in [(1, 1, 1), (2, 2, 2)]:
if border_mode == 'same' and subsample != (1, 1, 1):
continue
dim1 = conv_input_length(kernel_dim1, 3, border_mode, subsample[0])
dim2 = conv_input_length(kernel_dim2, 3, border_mode, subsample[1])
dim3 = conv_input_length(kernel_dim3, 3, border_mode, subsample[2])
layer_test(convolutional.Deconvolution3D,
kwargs={'nb_filter': nb_filter,
'kernel_dim1': 3,
'kernel_dim2': 3,
'kernel_dim3': 3,
'output_shape': (batch_size, nb_filter, dim1, dim2, dim3),
'border_mode': border_mode,
'subsample': subsample,
'dim_ordering': 'th'},
input_shape=(nb_samples, stack_size, kernel_dim1, kernel_dim2, kernel_dim3),
fixed_batch_size=True)
layer_test(convolutional.Deconvolution3D,
kwargs={'nb_filter': nb_filter,
'kernel_dim1': 3,
'kernel_dim2': 3,
'kernel_dim3': 3,
'output_shape': (batch_size, nb_filter, dim1, dim2, dim3),
'border_mode': border_mode,
'dim_ordering': 'th',
'W_regularizer': 'l2',
'b_regularizer': 'l2',
'activity_regularizer': 'activity_l2',
'subsample': subsample},
input_shape=(nb_samples, stack_size, kernel_dim1, kernel_dim2, kernel_dim3),
fixed_batch_size=True)
layer_test(convolutional.Deconvolution3D,
kwargs={'nb_filter': nb_filter,
'kernel_dim1': 3,
'kernel_dim2': 3,
'kernel_dim3': 3,
'output_shape': (nb_filter, dim1, dim2, dim3),
'border_mode': border_mode,
'dim_ordering': 'th',
'W_regularizer': 'l2',
'b_regularizer': 'l2',
'activity_regularizer': 'activity_l2',
'subsample': subsample},
input_shape=(nb_samples, stack_size, kernel_dim1, kernel_dim2, kernel_dim3))
if __name__ == '__main__':
pytest.main([__file__])