def _model_3(_dataset): if not is_module_installed('keras_rewiring'): return from keras_rewiring import Sparse, SparseConv2D, SparseDepthwiseConv2D x_train, y_train, x_test, y_test = _dataset axis = 1 if keras.backend.image_data_format() == 'channels_first' else -1 input_shape = x_train.shape[1:] input_layer = Input(input_shape) layer = SparseConv2D(filters=16, kernel_size=(5, 5), strides=(2, 2))(input_layer) layer = BatchNormalization(axis=axis)(layer) layer = Activation('relu')(layer) layer = AveragePooling2D()(layer) branch1 = SparseConv2D(filters=32, kernel_size=(3, 3), padding='same', activation='relu')(layer) branch2 = SparseDepthwiseConv2D(kernel_size=(1, 1), activation='relu')(layer) layer = Concatenate(axis=axis)([branch1, branch2]) layer = SparseConv2D(filters=10, kernel_size=(3, 3), activation='relu')(layer) layer = Flatten()(layer) layer = Dropout(1e-5)(layer) layer = Sparse(units=10, activation='softmax')(layer) model = Model(input_layer, layer) model.compile('adam', 'categorical_crossentropy', ['accuracy']) # Train model with backprop. history = model.fit(x_train, y_train, batch_size=64, epochs=1, verbose=2, validation_data=(x_test, y_test)) assert history.history['val_accuracy'][-1] > 0.96 return model
use_bias=False, connectivity_level=built_in_sparsity.pop(0) or None)(layer) layer = AveragePooling2D()(layer) layer = SparseConv2D( filters=8, kernel_size=( 3, 3), padding='same', activation='relu', use_bias=False, connectivity_level=built_in_sparsity.pop(0) or None)(layer) layer = Flatten()(layer) layer = Dropout(0.01)(layer) layer = Sparse(units=10, activation='softmax', use_bias=False, connectivity_level=built_in_sparsity.pop(0) or None)(layer) model = Model(input_layer, layer) model.summary() model.compile( NoisySGD( lr=0.01), 'categorical_crossentropy', ['accuracy']) # Train model with backprop. model.fit(x_train, y_train, batch_size=64, epochs=5, verbose=2, validation_data=(x_test, y_test),