Exemplo n.º 1
0
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
Exemplo n.º 2
0
    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),