From 88c60d24597ee3667f31cca020ba51003237d13e Mon Sep 17 00:00:00 2001 From: nzw Date: Sun, 16 Apr 2017 01:41:28 +0900 Subject: [PATCH] Style fixes (#71) --- examples/cifar10_densenet.py | 21 ++++----- examples/cifar10_ror.py | 16 +++---- examples/cifar10_wide_resnet.py | 14 +++--- keras_contrib/applications/densenet.py | 48 ++++++++++---------- keras_contrib/applications/ror.py | 10 ++-- keras_contrib/applications/wide_resnet.py | 16 +++---- keras_contrib/backend/tensorflow_backend.py | 19 ++------ keras_contrib/backend/theano_backend.py | 21 +++------ keras_contrib/callbacks.py | 15 +----- keras_contrib/layers/advanced_activations.py | 1 - keras_contrib/layers/convolutional.py | 9 ++-- keras_contrib/layers/core.py | 12 +---- keras_contrib/losses.py | 8 ++-- keras_contrib/utils/test_utils.py | 1 - tests/keras_contrib/backend/backend_test.py | 8 ++-- tests/keras_contrib/initializers_test.py | 2 +- tests/keras_contrib/layers/test_recurrent.py | 3 +- tests/keras_contrib/metrics_test.py | 2 +- tests/keras_contrib/optimizers_test.py | 2 +- tests/keras_contrib/regularizers_test.py | 4 +- 20 files changed, 93 insertions(+), 139 deletions(-) diff --git a/examples/cifar10_densenet.py b/examples/cifar10_densenet.py index 971956f..79c6c3d 100644 --- a/examples/cifar10_densenet.py +++ b/examples/cifar10_densenet.py @@ -8,7 +8,6 @@ from __future__ import print_function from __future__ import division import numpy as np -import sklearn.metrics as metrics from keras import backend as K from keras.callbacks import ModelCheckpoint, ReduceLROnPlateau, EarlyStopping @@ -20,13 +19,13 @@ from keras_contrib.applications import DenseNet batch_size = 64 nb_classes = 10 -nb_epoch = 100 +epochs = 100 img_rows, img_cols = 32, 32 img_channels = 3 # Parameters for the DenseNet model builder -img_dim = (img_channels, img_rows, img_cols) if K.image_data_format() == "channels_first" else (img_rows, img_cols, img_channels) +img_dim = (img_channels, img_rows, img_cols) if K.image_data_format() == 'channels_first' else (img_rows, img_cols, img_channels) depth = 40 nb_dense_block = 3 growth_rate = 12 @@ -36,13 +35,13 @@ dropout_rate = 0.0 # 0.0 for data augmentation # Create the model (without loading weights) model = DenseNet(depth, nb_dense_block, growth_rate, nb_filter, dropout_rate=dropout_rate, input_shape=img_dim, weights=None) -print("Model created") +print('Model created') model.summary() optimizer = Adam(lr=1e-3) # Using Adam instead of SGD to speed up training -model.compile(loss='categorical_crossentropy', optimizer=optimizer, metrics=["accuracy"]) -print("Finished compiling") +model.compile(loss='categorical_crossentropy', optimizer=optimizer, metrics=['acc']) +print('Finished compiling') (trainX, trainY), (testX, testY) = cifar10.load_data() @@ -61,22 +60,22 @@ generator = ImageDataGenerator(rotation_range=15, generator.fit(trainX, seed=0) -weights_file = "DenseNet-40-12-CIFAR-10.h5" +weights_file = 'DenseNet-40-12-CIFAR-10.h5' lr_reducer = ReduceLROnPlateau(monitor='val_loss', factor=np.sqrt(0.1), cooldown=0, patience=10, min_lr=0.5e-6) early_stopper = EarlyStopping(monitor='val_acc', min_delta=1e-4, patience=20) -model_checkpoint = ModelCheckpoint(weights_file, monitor="val_acc", save_best_only=True, +model_checkpoint = ModelCheckpoint(weights_file, monitor='val_acc', save_best_only=True, save_weights_only=True, mode='auto') callbacks = [lr_reducer, early_stopper, model_checkpoint] model.fit_generator(generator.flow(trainX, Y_train, batch_size=batch_size), steps_per_epoch=len(trainX) // batch_size, - epochs=nb_epoch, + epochs=epochs, callbacks=callbacks, validation_data=(testX, Y_test), verbose=2) scores = model.evaluate(testX, Y_test, batch_size=batch_size) -print("Test loss : ", scores[0]) -print("Test accuracy : ", scores[1]) +print('Test loss : ', scores[0]) +print('Test accuracy : ', scores[1]) diff --git a/examples/cifar10_ror.py b/examples/cifar10_ror.py index f01e4c9..9f0ae3a 100644 --- a/examples/cifar10_ror.py +++ b/examples/cifar10_ror.py @@ -3,8 +3,6 @@ Trains a Residual-of-Residual Network (WRN-40-2) model on the CIFAR-10 Dataset. Gets a 94.53% accuracy score after 150 epochs. ''' -import numpy as np -import sklearn.metrics as metrics import keras.callbacks as callbacks import keras.utils.np_utils as kutils @@ -15,7 +13,7 @@ from keras.optimizers import Adam from keras_contrib.applications import ResidualOfResidual batch_size = 64 -nb_epoch = 150 +epochs = 150 img_rows, img_cols = 32, 32 (trainX, trainY), (testX, testY) = cifar10.load_data() @@ -40,16 +38,16 @@ model = ResidualOfResidual(depth=40, width=2, dropout_rate=0.0, weights=None) optimizer = Adam(lr=1e-3) -model.compile(loss="categorical_crossentropy", optimizer=optimizer, metrics=["acc"]) -print("Finished compiling") +model.compile(loss='categorical_crossentropy', optimizer=optimizer, metrics=['acc']) +print('Finished compiling') model.fit_generator(generator.flow(trainX, trainY, batch_size=batch_size), steps_per_epoch=len(trainX) // batch_size, - epochs=nb_epoch, - callbacks=[callbacks.ModelCheckpoint("weights/RoR-WRN-40-2-Weights.h5", monitor="val_acc", + epochs=epochs, + callbacks=[callbacks.ModelCheckpoint('weights/RoR-WRN-40-2-Weights.h5', monitor='val_acc', save_best_only=True, save_weights_only=True)], validation_data=(testX, testY), verbose=2) scores = model.evaluate(testX, testY, batch_size) -print("Test loss : ", scores[0]) -print("Test accuracy : ", scores[1]) +print('Test loss : ', scores[0]) +print('Test accuracy : ', scores[1]) diff --git a/examples/cifar10_wide_resnet.py b/examples/cifar10_wide_resnet.py index 31b7b65..22fdce0 100644 --- a/examples/cifar10_wide_resnet.py +++ b/examples/cifar10_wide_resnet.py @@ -18,7 +18,7 @@ from keras.preprocessing.image import ImageDataGenerator from keras_contrib.applications.wide_resnet import WideResidualNetwork batch_size = 64 -nb_epoch = 300 +epochs = 300 img_rows, img_cols = 32, 32 (trainX, trainY), (testX, testY) = cifar10.load_data() @@ -44,16 +44,16 @@ model = WideResidualNetwork(depth=28, width=8, dropout_rate=0.0, weights=None) model.summary() -model.compile(loss="categorical_crossentropy", optimizer="adam", metrics=["accuracy"]) -print("Finished compiling") +model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['acc']) +print('Finished compiling') model.fit_generator(generator.flow(trainX, trainY, batch_size=batch_size), steps_per_epoch=len(trainX) // batch_size, - epochs=nb_epoch, + epochs=epochs, callbacks=[ - callbacks.ModelCheckpoint("WRN-28-8 Weights.h5", monitor="val_acc", save_best_only=True, + callbacks.ModelCheckpoint('WRN-28-8 Weights.h5', monitor='val_acc', save_best_only=True, save_weights_only=True)], validation_data=(testX, testY)) scores = model.evaluate(testX, testY, batch_size) -print("Test loss : %0.5f" % (scores[0])) -print("Test accuracy = %0.5f" % (scores[1])) +print('Test loss : %0.5f' % (scores[0])) +print('Test accuracy = %0.5f' % (scores[1])) diff --git a/keras_contrib/applications/densenet.py b/keras_contrib/applications/densenet.py index 1e3a3a0..6154651 100644 --- a/keras_contrib/applications/densenet.py +++ b/keras_contrib/applications/densenet.py @@ -14,11 +14,11 @@ import warnings from keras.models import Model from keras.layers.core import Dense, Dropout, Activation, Reshape -from keras.layers import Convolution2D, Deconvolution2D, AtrousConvolution2D, UpSampling2D +from keras.layers import Deconvolution2D, AtrousConvolution2D, UpSampling2D from keras.layers.merge import concatenate from keras.layers.pooling import AveragePooling2D from keras.layers.pooling import GlobalAveragePooling2D -from keras.layers import Input, merge, Conv2D +from keras.layers import Input, Conv2D from keras.layers.normalization import BatchNormalization from keras.regularizers import l2 from keras.utils.layer_utils import convert_all_kernels_in_model @@ -295,7 +295,7 @@ def __conv_block(ip, nb_filter, bottleneck=False, dropout_rate=None, weight_deca Returns: keras tensor with batch_norm, relu and convolution2d added (optional bottleneck) ''' - concat_axis = 1 if K.image_dim_ordering() == "th" else -1 + concat_axis = 1 if K.image_dim_ordering() == 'th' else -1 x = BatchNormalization(axis=concat_axis, gamma_regularizer=l2(weight_decay), beta_regularizer=l2(weight_decay))(ip) @@ -314,7 +314,7 @@ def __conv_block(ip, nb_filter, bottleneck=False, dropout_rate=None, weight_deca beta_regularizer=l2(weight_decay))(x) x = Activation('relu')(x) - x = Conv2D(nb_filter, (3, 3), kernel_initializer="he_uniform", padding="same", use_bias=False, + x = Conv2D(nb_filter, (3, 3), kernel_initializer='he_uniform', padding='same', use_bias=False, kernel_regularizer=l2(weight_decay))(x) if dropout_rate: x = Dropout(dropout_rate)(x) @@ -336,12 +336,12 @@ def __transition_block(ip, nb_filter, compression=1.0, dropout_rate=None, weight Returns: keras tensor, after applying batch_norm, relu-conv, dropout, maxpool ''' - concat_axis = 1 if K.image_dim_ordering() == "th" else -1 + concat_axis = 1 if K.image_dim_ordering() == 'th' else -1 x = BatchNormalization(axis=concat_axis, gamma_regularizer=l2(weight_decay), beta_regularizer=l2(weight_decay))(ip) x = Activation('relu')(x) - x = Conv2D(nb_filter, (3, 3), kernel_initializer="he_uniform", padding="same", use_bias=False, + x = Conv2D(nb_filter, (3, 3), kernel_initializer='he_uniform', padding='same', use_bias=False, kernel_regularizer=l2(weight_decay))(x) if dropout_rate: x = Dropout(dropout_rate)(x) @@ -368,7 +368,7 @@ def __dense_block(x, nb_layers, nb_filter, growth_rate, bottleneck=False, dropou Returns: keras tensor with nb_layers of conv_block appended ''' - concat_axis = 1 if K.image_dim_ordering() == "th" else -1 + concat_axis = 1 if K.image_dim_ordering() == 'th' else -1 x_list = [x] @@ -403,14 +403,14 @@ def __transition_up_block(ip, nb_filters, type='upsampling', output_shape=None, if type == 'upsampling': x = UpSampling2D()(ip) elif type == 'subpixel': - x = Conv2D(nb_filters, (3, 3), padding="same", kernel_regularizer=l2(weight_decay), activation='relu', + x = Conv2D(nb_filters, (3, 3), padding='same', kernel_regularizer=l2(weight_decay), activation='relu', use_bias=False, kernel_initializer='he_uniform')(ip) x = SubPixelUpscaling(scale_factor=2)(x) - x = Conv2D(nb_filters, (3, 3), activation="relu", padding='same', kernel_regularizer=l2(weight_decay), + x = Conv2D(nb_filters, (3, 3), activation='relu', padding='same', kernel_regularizer=l2(weight_decay), use_bias=False, kernel_initializer='he_uniform')(x) elif type == 'atrous': # waiting on https://github.com/fchollet/keras/issues/4018 - x = AtrousConvolution2D(nb_filters, 3, 3, activation="relu", W_regularizer=l2(weight_decay), + x = AtrousConvolution2D(nb_filters, 3, 3, activation='relu', W_regularizer=l2(weight_decay), bias=False, atrous_rate=(2, 2), init='he_uniform')(ip) else: x = Deconvolution2D(nb_filters, 3, 3, output_shape, activation='relu', border_mode='same', @@ -445,18 +445,18 @@ def __create_dense_net(nb_classes, img_input, include_top, depth=40, nb_dense_bl Returns: keras tensor with nb_layers of conv_block appended ''' - concat_axis = 1 if K.image_dim_ordering() == "th" else -1 + concat_axis = 1 if K.image_dim_ordering() == 'th' else -1 - assert (depth - 4) % 3 == 0, "Depth must be 3 N + 4" + assert (depth - 4) % 3 == 0, 'Depth must be 3 N + 4' if reduction != 0.0: - assert reduction <= 1.0 and reduction > 0.0, "reduction value must lie between 0.0 and 1.0" + assert reduction <= 1.0 and reduction > 0.0, 'reduction value must lie between 0.0 and 1.0' # layers in each dense block if type(nb_layers_per_block) is list or type(nb_layers_per_block) is tuple: nb_layers = list(nb_layers_per_block) # Convert tuple to list - assert len(nb_layers) == (nb_dense_block + 1), "If list, nb_layer is used as provided. " \ - "Note that list size must be (nb_dense_block + 1)" + assert len(nb_layers) == (nb_dense_block + 1), 'If list, nb_layer is used as provided. ' \ + 'Note that list size must be (nb_dense_block + 1)' final_nb_layer = nb_layers[-1] nb_layers = nb_layers[:-1] else: @@ -479,7 +479,7 @@ def __create_dense_net(nb_classes, img_input, include_top, depth=40, nb_dense_bl compression = 1.0 - reduction # Initial convolution - x = Conv2D(nb_filter, (3, 3), kernel_initializer="he_uniform", padding="same", name="initial_conv2D", use_bias=False, + x = Conv2D(nb_filter, (3, 3), kernel_initializer='he_uniform', padding='same', name='initial_conv2D', use_bias=False, kernel_regularizer=l2(weight_decay))(img_input) # Add dense blocks @@ -538,7 +538,7 @@ def __create_fcn_dense_net(nb_classes, img_input, include_top, nb_dense_block=5, Returns: keras tensor with nb_layers of conv_block appended ''' - concat_axis = 1 if K.image_dim_ordering() == "th" else -1 + concat_axis = 1 if K.image_dim_ordering() == 'th' else -1 if concat_axis == 1: # th dim ordering _, rows, cols = input_shape @@ -546,20 +546,20 @@ def __create_fcn_dense_net(nb_classes, img_input, include_top, nb_dense_block=5, rows, cols, _ = input_shape if reduction != 0.0: - assert reduction <= 1.0 and reduction > 0.0, "reduction value must lie between 0.0 and 1.0" + assert reduction <= 1.0 and reduction > 0.0, 'reduction value must lie between 0.0 and 1.0' # check if upsampling_conv has minimum number of filters # minimum is set to 12, as at least 3 color channels are needed for correct upsampling - assert nb_upsampling_conv > 12 and nb_upsampling_conv % 4 == 0, "Parameter `upsampling_conv` number of channels must " \ - "be a positive number divisible by 4 and greater " \ - "than 12" + assert nb_upsampling_conv > 12 and nb_upsampling_conv % 4 == 0, 'Parameter `upsampling_conv` number of channels must ' \ + 'be a positive number divisible by 4 and greater ' \ + 'than 12' # layers in each dense block if type(nb_layers_per_block) is list or type(nb_layers_per_block) is tuple: nb_layers = list(nb_layers_per_block) # Convert tuple to list - assert len(nb_layers) == (nb_dense_block + 1), "If list, nb_layer is used as provided. " \ - "Note that list size must be (nb_dense_block + 1)" + assert len(nb_layers) == (nb_dense_block + 1), 'If list, nb_layer is used as provided. ' \ + 'Note that list size must be (nb_dense_block + 1)' bottleneck_nb_layers = nb_layers[-1] rev_layers = nb_layers[::-1] @@ -572,7 +572,7 @@ def __create_fcn_dense_net(nb_classes, img_input, include_top, nb_dense_block=5, compression = 1.0 - reduction # Initial convolution - x = Conv2D(init_conv_filters, (3, 3), kernel_initializer="he_uniform", padding="same", name="initial_conv2D", + x = Conv2D(init_conv_filters, (3, 3), kernel_initializer='he_uniform', padding='same', name='initial_conv2D', use_bias=False, kernel_regularizer=l2(weight_decay))(img_input) nb_filter = init_conv_filters diff --git a/keras_contrib/applications/ror.py b/keras_contrib/applications/ror.py index d2474f3..6a0ba28 100644 --- a/keras_contrib/applications/ror.py +++ b/keras_contrib/applications/ror.py @@ -158,11 +158,11 @@ def ResidualOfResidual(depth=40, width=2, dropout_rate=0.0, def __initial_conv_block(input, k=1, dropout=0.0, initial=False): init = input - channel_axis = 1 if K.image_dim_ordering() == "th" else -1 + channel_axis = 1 if K.image_dim_ordering() == 'th' else -1 # Check if input number of filters is same as 16 * k, else create convolution2d for this input if initial: - if K.image_dim_ordering() == "th": + if K.image_dim_ordering() == 'th': init = Conv2D(16 * k, (1, 1), kernel_initializer='he_normal', padding='same')(init) else: init = Conv2D(16 * k, (1, 1), kernel_initializer='he_normal', padding='same')(init) @@ -185,10 +185,10 @@ def __initial_conv_block(input, k=1, dropout=0.0, initial=False): def __conv_block(input, nb_filters=32, k=1, dropout=0.0): init = input - channel_axis = 1 if K.image_dim_ordering() == "th" else -1 + channel_axis = 1 if K.image_dim_ordering() == 'th' else -1 # Check if input number of filters is same as 32 * k, else create convolution2d for this input - if K.image_dim_ordering() == "th": + if K.image_dim_ordering() == 'th': if init._keras_shape[1] != nb_filters * k: init = Conv2D(nb_filters * k, (1, 1), kernel_initializer='he_normal', padding='same')(init) else: @@ -234,7 +234,7 @@ def __create_pre_residual_of_residual(nb_classes, img_input, include_top, depth= N = (depth - 4) // 6 - channel_axis = 1 if K.image_dim_ordering() == "th" else -1 + channel_axis = 1 if K.image_dim_ordering() == 'th' else -1 # Initial convolution layer x = Conv2D(16, (3, 3), padding='same', kernel_initializer='he_normal')(img_input) diff --git a/keras_contrib/applications/wide_resnet.py b/keras_contrib/applications/wide_resnet.py index 4b86271..647d63a 100644 --- a/keras_contrib/applications/wide_resnet.py +++ b/keras_contrib/applications/wide_resnet.py @@ -15,7 +15,7 @@ import warnings from keras.models import Model from keras.layers.core import Dense, Dropout, Activation, Flatten from keras.layers.pooling import AveragePooling2D, MaxPooling2D -from keras.layers import Input, merge, Conv2D +from keras.layers import Input, Conv2D from keras.layers.merge import add from keras.layers.normalization import BatchNormalization from keras.utils.layer_utils import convert_all_kernels_in_model @@ -159,7 +159,7 @@ def WideResidualNetwork(depth=28, width=8, dropout_rate=0.0, def __conv1_block(input): x = Conv2D(16, (3, 3), padding='same')(input) - channel_axis = 1 if K.image_dim_ordering() == "th" else -1 + channel_axis = 1 if K.image_dim_ordering() == 'th' else -1 x = BatchNormalization(axis=channel_axis)(x) x = Activation('relu')(x) @@ -169,10 +169,10 @@ def __conv1_block(input): def __conv2_block(input, k=1, dropout=0.0): init = input - channel_axis = 1 if K.image_dim_ordering() == "th" else -1 + channel_axis = 1 if K.image_dim_ordering() == 'th' else -1 # Check if input number of filters is same as 16 * k, else create convolution2d for this input - if K.image_dim_ordering() == "th": + if K.image_dim_ordering() == 'th': if init._keras_shape[1] != 16 * k: init = Conv2D(16 * k, (1, 1), activation='linear', padding='same')(init) else: @@ -197,10 +197,10 @@ def __conv2_block(input, k=1, dropout=0.0): def __conv3_block(input, k=1, dropout=0.0): init = input - channel_axis = 1 if K.image_dim_ordering() == "th" else -1 + channel_axis = 1 if K.image_dim_ordering() == 'th' else -1 # Check if input number of filters is same as 32 * k, else create convolution2d for this input - if K.image_dim_ordering() == "th": + if K.image_dim_ordering() == 'th': if init._keras_shape[1] != 32 * k: init = Conv2D(32 * k, (1, 1), activation='linear', padding='same')(init) else: @@ -225,10 +225,10 @@ def __conv3_block(input, k=1, dropout=0.0): def ___conv4_block(input, k=1, dropout=0.0): init = input - channel_axis = 1 if K.image_dim_ordering() == "th" else -1 + channel_axis = 1 if K.image_dim_ordering() == 'th' else -1 # Check if input number of filters is same as 64 * k, else create convolution2d for this input - if K.image_dim_ordering() == "th": + if K.image_dim_ordering() == 'th': if init._keras_shape[1] != 64 * k: init = Conv2D(64 * k, (1, 1), activation='linear', padding='same')(init) else: diff --git a/keras_contrib/backend/tensorflow_backend.py b/keras_contrib/backend/tensorflow_backend.py index f8f63d0..4f2ea0f 100644 --- a/keras_contrib/backend/tensorflow_backend.py +++ b/keras_contrib/backend/tensorflow_backend.py @@ -1,21 +1,12 @@ import tensorflow as tf -from tensorflow.python.training import moving_averages -from tensorflow.python.ops import tensor_array_ops -from tensorflow.python.ops import control_flow_ops try: from tensorflow.python.ops import ctc_ops as ctc except ImportError: import tensorflow.contrib.ctc as ctc -from keras import backend as K from keras.backend import tensorflow_backend as KTF -import numpy as np -import os -import warnings -from keras.backend.common import floatx, _EPSILON, image_data_format +from keras.backend.common import floatx, image_data_format from keras.backend.tensorflow_backend import _preprocess_conv3d_input -from keras.backend.tensorflow_backend import _preprocess_conv3d_kernel -from keras.backend.tensorflow_backend import _preprocess_padding from keras.backend.tensorflow_backend import _postprocess_conv3d_output from keras.backend.tensorflow_backend import _preprocess_padding from keras.backend.tensorflow_backend import _preprocess_conv2d_input @@ -118,8 +109,8 @@ def deconv3d(x, kernel, output_shape, strides=(1, 1, 1), return _postprocess_conv3d_output(x, data_format) -def extract_image_patches(x, ksizes, ssizes, padding="same", - data_format="tf"): +def extract_image_patches(x, ksizes, ssizes, padding='same', + data_format='tf'): ''' Extract the patches from an image # Parameters @@ -138,7 +129,7 @@ def extract_image_patches(x, ksizes, ssizes, padding="same", kernel = [1, ksizes[0], ksizes[1], 1] strides = [1, ssizes[0], ssizes[1], 1] padding = _preprocess_padding(padding) - if data_format == "channels_first": + if data_format == 'channels_first': x = KTF.permute_dimensions(x, (0, 2, 3, 1)) bs_i, w_i, h_i, ch_i = KTF.int_shape(x) patches = tf.extract_image_patches(x, kernel, strides, [1, 1, 1, 1], @@ -147,7 +138,7 @@ def extract_image_patches(x, ksizes, ssizes, padding="same", bs, w, h, ch = KTF.int_shape(patches) patches = tf.reshape(tf.transpose(tf.reshape(patches, [-1, w, h, tf.floordiv(ch, ch_i), ch_i]), [0, 1, 2, 4, 3]), [-1, w, h, ch_i, ksizes[0], ksizes[1]]) - if data_format == "channels_last": + if data_format == 'channels_last': patches = KTF.permute_dimensions(patches, [0, 1, 2, 4, 5, 3]) return patches diff --git a/keras_contrib/backend/theano_backend.py b/keras_contrib/backend/theano_backend.py index 5699256..5667aca 100644 --- a/keras_contrib/backend/theano_backend.py +++ b/keras_contrib/backend/theano_backend.py @@ -1,10 +1,5 @@ -import theano from theano import tensor as T -from theano.sandbox.rng_mrg import MRG_RandomStreams as RandomStreams from theano.sandbox.neighbours import images2neibs -from theano.tensor.signal import pool -from theano.tensor.nnet import conv3d2d -from theano.printing import Print try: import theano.sparse as th_sparse_module @@ -14,11 +9,8 @@ try: from theano.tensor.nnet.nnet import softsign as T_softsign except ImportError: from theano.sandbox.softsign import softsign as T_softsign -from keras import backend as K from keras.backend import theano_backend as KTH -import inspect -import numpy as np -from keras.backend.common import _FLOATX, floatx, _EPSILON, image_data_format +from keras.backend.common import image_data_format from keras.backend.theano_backend import _preprocess_conv3d_input from keras.backend.theano_backend import _preprocess_conv3d_kernel from keras.backend.theano_backend import _preprocess_conv3d_filter_shape @@ -27,7 +19,6 @@ from keras.backend.theano_backend import _postprocess_conv3d_output from keras.backend.theano_backend import _preprocess_conv2d_input from keras.backend.theano_backend import _postprocess_conv2d_output -import itertools py_all = all @@ -144,7 +135,7 @@ def deconv3d(x, kernel, output_shape, strides=(1, 1, 1), return conv_out -def extract_image_patches(X, ksizes, strides, padding="valid", data_format="channels_first"): +def extract_image_patches(X, ksizes, strides, padding='valid', data_format='channels_first'): ''' Extract the patches from an image Parameters @@ -161,9 +152,9 @@ def extract_image_patches(X, ksizes, strides, padding="valid", data_format="chan TH ==> (batch_size,w,h,c,k_w,k_h) ''' patch_size = ksizes[1] - if padding == "same": - padding = "ignore_borders" - if data_format == "channels_last": + if padding == 'same': + padding = 'ignore_borders' + if data_format == 'channels_last': X = KTH.permute_dimensions(X, [0, 3, 1, 2]) # Thanks to https://github.com/awentzonline for the help! batch, c, w, h = KTH.shape(X) @@ -177,7 +168,7 @@ def extract_image_patches(X, ksizes, strides, padding="valid", data_format="chan patches = KTH.permute_dimensions(patches, (0, 2, 1, 3, 4)) # arrange in a 2d-grid (rows, cols, channels, px, py) patches = KTH.reshape(patches, (batch, num_rows, num_cols, num_channels, patch_size, patch_size)) - if data_format == "channels_last": + if data_format == 'channels_last': patches = KTH.permute_dimensions(patches, [0, 1, 2, 4, 5, 3]) return patches diff --git a/keras_contrib/callbacks.py b/keras_contrib/callbacks.py index 5686a9c..5a7b24f 100644 --- a/keras_contrib/callbacks.py +++ b/keras_contrib/callbacks.py @@ -2,19 +2,8 @@ from __future__ import absolute_import from __future__ import print_function import os -import csv import numpy as np -import time -import json -import warnings - -from collections import deque -from collections import OrderedDict -from collections import Iterable -from keras.utils.generic_utils import Progbar -from keras import backend as K -from pkg_resources import parse_version from keras.callbacks import Callback, ModelCheckpoint, LearningRateScheduler @@ -47,7 +36,7 @@ class SnapshotModelCheckpoint(Callback): def on_epoch_end(self, epoch, logs={}): if epoch != 0 and (epoch + 1) % self.check == 0: - filepath = self.fn_prefix + "-%d.h5" % ((epoch + 1) // self.check) + filepath = self.fn_prefix + '-%d.h5' % ((epoch + 1) // self.check) self.model.save_weights(filepath, overwrite=True) # print("Saved snapshot at weights/%s_%d.h5" % (self.fn_prefix, epoch)) @@ -88,7 +77,7 @@ class SnapshotCallbackBuilder: if not os.path.exists('weights/'): os.makedirs('weights/') - callback_list = [ModelCheckpoint("weights/%s-Best.h5" % model_prefix, monitor="val_acc", + callback_list = [ModelCheckpoint('weights/%s-Best.h5' % model_prefix, monitor='val_acc', save_best_only=True, save_weights_only=True), LearningRateScheduler(schedule=self._cosine_anneal_schedule), SnapshotModelCheckpoint(self.T, self.M, fn_prefix='weights/%s' % model_prefix)] diff --git a/keras_contrib/layers/advanced_activations.py b/keras_contrib/layers/advanced_activations.py index 1030c5c..3ddaf25 100644 --- a/keras_contrib/layers/advanced_activations.py +++ b/keras_contrib/layers/advanced_activations.py @@ -5,7 +5,6 @@ from keras.engine import Layer from keras.engine import InputSpec from .. import backend as K from keras.utils.generic_utils import get_custom_objects -import numpy as np class PELU(Layer): diff --git a/keras_contrib/layers/convolutional.py b/keras_contrib/layers/convolutional.py index 97a57ae..e2180d4 100644 --- a/keras_contrib/layers/convolutional.py +++ b/keras_contrib/layers/convolutional.py @@ -12,7 +12,6 @@ from keras.engine import InputSpec from keras.layers.convolutional import Convolution3D from keras.utils.generic_utils import get_custom_objects from keras.utils.conv_utils import conv_output_length -from keras.utils.conv_utils import conv_input_length from keras.utils.conv_utils import normalize_data_format import numpy as np @@ -227,8 +226,8 @@ class Deconvolution3D(Convolution3D): Deconv3D = Deconvolution3D -get_custom_objects().update({"Deconvolution3D": Deconvolution3D}) -get_custom_objects().update({"Deconv3D": Deconv3D}) +get_custom_objects().update({'Deconvolution3D': Deconvolution3D}) +get_custom_objects().update({'Deconv3D': Deconv3D}) class CosineConvolution2D(Layer): @@ -454,8 +453,8 @@ class CosineConvolution2D(Layer): CosineConv2D = CosineConvolution2D -get_custom_objects().update({"CosineConvolution2D": CosineConvolution2D}) -get_custom_objects().update({"CosineConv2D": CosineConv2D}) +get_custom_objects().update({'CosineConvolution2D': CosineConvolution2D}) +get_custom_objects().update({'CosineConv2D': CosineConv2D}) class SubPixelUpscaling(Layer): diff --git a/keras_contrib/layers/core.py b/keras_contrib/layers/core.py index 4117b7b..5357a0d 100644 --- a/keras_contrib/layers/core.py +++ b/keras_contrib/layers/core.py @@ -2,14 +2,6 @@ from __future__ import absolute_import from __future__ import division -import numpy as np -import keras - -import copy -import inspect -import types as python_types -import warnings - from .. import backend as K from .. import activations from .. import initializers @@ -17,8 +9,6 @@ from .. import regularizers from .. import constraints from keras.engine import InputSpec from keras.engine import Layer -from keras.utils.generic_utils import func_dump -from keras.utils.generic_utils import func_load from keras.utils.generic_utils import get_custom_objects @@ -178,4 +168,4 @@ class CosineDense(Layer): return dict(list(base_config.items()) + list(config.items())) -get_custom_objects().update({"CosineDense": CosineDense}) +get_custom_objects().update({'CosineDense': CosineDense}) diff --git a/keras_contrib/losses.py b/keras_contrib/losses.py index bbdb93d..218defd 100644 --- a/keras_contrib/losses.py +++ b/keras_contrib/losses.py @@ -15,7 +15,7 @@ class DSSIMObjective(): kernel_size: Size of the sliding window (default 3) max_value: Max value of the output (default 1.0) """ - self.__name__ = "DSSIMObjective" + self.__name__ = 'DSSIMObjective' self.kernel_size = kernel_size self.k1 = k1 self.k2 = k2 @@ -26,7 +26,7 @@ class DSSIMObjective(): self.backend = KC.backend() def __int_shape(self, x): - return KC.int_shape(x) if self.backend == "tensorflow" else KC.shape(x) + return KC.int_shape(x) if self.backend == 'tensorflow' else KC.shape(x) def __call__(self, y_true, y_pred): # There are additional parameters for this function @@ -36,8 +36,8 @@ class DSSIMObjective(): kernel = [self.kernel_size, self.kernel_size] y_true = KC.reshape(y_true, [-1] + list(self.__int_shape(y_pred)[1:])) y_pred = KC.reshape(y_pred, [-1] + list(self.__int_shape(y_pred)[1:])) - patches_pred = KC.extract_image_patches(y_pred, kernel, kernel, "valid", self.dim_ordering) - patches_true = KC.extract_image_patches(y_true, kernel, kernel, "valid", self.dim_ordering) + patches_pred = KC.extract_image_patches(y_pred, kernel, kernel, 'valid', self.dim_ordering) + patches_true = KC.extract_image_patches(y_true, kernel, kernel, 'valid', self.dim_ordering) # Reshape to get the var in the cells bs, w, h, c1, c2, c3 = self.__int_shape(patches_pred) diff --git a/keras_contrib/utils/test_utils.py b/keras_contrib/utils/test_utils.py index 0959937..97b6d49 100644 --- a/keras_contrib/utils/test_utils.py +++ b/keras_contrib/utils/test_utils.py @@ -6,7 +6,6 @@ import six from keras.engine import Model, Input from keras.models import Sequential -from keras.models import model_from_json from keras import backend as K diff --git a/tests/keras_contrib/backend/backend_test.py b/tests/keras_contrib/backend/backend_test.py index f39e786..64135b0 100644 --- a/tests/keras_contrib/backend/backend_test.py +++ b/tests/keras_contrib/backend/backend_test.py @@ -82,8 +82,8 @@ class TestBackend(object): strides = [kernel_shape, kernel_shape] xth = KTH.variable(xval) xtf = KTF.variable(xval) - ztf = KTF.eval(KCTF.extract_image_patches(xtf, kernel, strides, data_format='channels_first', padding="valid")) - zth = KTH.eval(KCTH.extract_image_patches(xth, kernel, strides, data_format='channels_first', padding="valid")) + ztf = KTF.eval(KCTF.extract_image_patches(xtf, kernel, strides, data_format='channels_first', padding='valid')) + zth = KTH.eval(KCTH.extract_image_patches(xth, kernel, strides, data_format='channels_first', padding='valid')) assert zth.shape == ztf.shape assert_allclose(zth, ztf, atol=1e-02) @@ -95,8 +95,8 @@ class TestBackend(object): strides = [kernel_shape, kernel_shape] xth = KTH.variable(xval) xtf = KTF.variable(xval) - ztf = KTF.eval(KCTF.extract_image_patches(xtf, kernel, strides, data_format='channels_last', padding="same")) - zth = KTH.eval(KCTH.extract_image_patches(xth, kernel, strides, data_format='channels_last', padding="same")) + ztf = KTF.eval(KCTF.extract_image_patches(xtf, kernel, strides, data_format='channels_last', padding='same')) + zth = KTH.eval(KCTH.extract_image_patches(xth, kernel, strides, data_format='channels_last', padding='same')) assert zth.shape == ztf.shape assert_allclose(zth, ztf, atol=1e-02) diff --git a/tests/keras_contrib/initializers_test.py b/tests/keras_contrib/initializers_test.py index 8472f69..593706d 100644 --- a/tests/keras_contrib/initializers_test.py +++ b/tests/keras_contrib/initializers_test.py @@ -50,7 +50,7 @@ def test_uniform(tensor_shape): ''' -@pytest.mark.parametrize('tensor_shape', [FC_SHAPE, CONV_SHAPE], ids=['FC', "CONV"]) +@pytest.mark.parametrize('tensor_shape', [FC_SHAPE, CONV_SHAPE], ids=['FC', 'CONV']) def test_cai(tensor_shape): # upper and lower bounds are proved in original paper _runner(initializers.ConvolutionAware(), tensor_shape, diff --git a/tests/keras_contrib/layers/test_recurrent.py b/tests/keras_contrib/layers/test_recurrent.py index 6abbd15..9601983 100644 --- a/tests/keras_contrib/layers/test_recurrent.py +++ b/tests/keras_contrib/layers/test_recurrent.py @@ -6,7 +6,6 @@ from keras.utils.test_utils import layer_test from keras_contrib.layers import recurrent from keras.layers import embeddings from keras.models import Sequential -from keras.layers.core import Masking from keras import regularizers from keras.utils.test_utils import keras_test @@ -24,7 +23,7 @@ def rnn_test(f): """ f = keras_test(f) # Example : return pytest.mark.parametrize("layer_class", [recurrent.JZ1, recurrent.NTM])(f) - return pytest.mark.parametrize("layer_class", [])(f) + return pytest.mark.parametrize('layer_class', [])(f) @rnn_test diff --git a/tests/keras_contrib/metrics_test.py b/tests/keras_contrib/metrics_test.py index c450680..2b387f3 100644 --- a/tests/keras_contrib/metrics_test.py +++ b/tests/keras_contrib/metrics_test.py @@ -18,5 +18,5 @@ def test_metrics(): assert K.eval(output).shape == () -if __name__ == "__main__": +if __name__ == '__main__': pytest.main([__file__]) diff --git a/tests/keras_contrib/optimizers_test.py b/tests/keras_contrib/optimizers_test.py index 34de299..dc8b0d6 100644 --- a/tests/keras_contrib/optimizers_test.py +++ b/tests/keras_contrib/optimizers_test.py @@ -32,7 +32,7 @@ def _test_optimizer(optimizer, target=0.89): model.compile(loss='categorical_crossentropy', optimizer=optimizer, metrics=['accuracy']) - history = model.fit(X_train, y_train, nb_epoch=12, batch_size=16, + history = model.fit(X_train, y_train, epochs=12, batch_size=16, validation_data=(X_test, y_test), verbose=2) config = optimizer.get_config() assert type(config) == dict diff --git a/tests/keras_contrib/regularizers_test.py b/tests/keras_contrib/regularizers_test.py index 965786d..496572a 100644 --- a/tests/keras_contrib/regularizers_test.py +++ b/tests/keras_contrib/regularizers_test.py @@ -27,8 +27,8 @@ def get_data(): (X_train, y_train), (X_test, y_test) = mnist.load_data() X_train = X_train.reshape(60000, 784)[:max_train_samples] X_test = X_test.reshape(10000, 784)[:max_test_samples] - X_train = X_train.astype("float32") / 255 - X_test = X_test.astype("float32") / 255 + X_train = X_train.astype('float32') / 255 + X_test = X_test.astype('float32') / 255 # convert class vectors to binary class matrices y_train = y_train[:max_train_samples]