Esempio n. 1
0
def main(args):
    # Define a convolutional neural network the same as above
    net = builder.Sequential(
        builder.Convolution((7, 7), 32),
        builder.ReLU(),
        builder.Pooling('max', (2, 2), (2, 2)),
        builder.Reshape((flattened_input_size,))
        builder.Affine(hidden_size),
        builder.Affine(num_classes),
    )

    # Cast the definition to a model compatible with minpy solver
    model = builder.Model(net, 'softmax', (3 * 32 * 32,))

    data = get_CIFAR10_data(args.data_dir)

    train_dataiter = NDArrayIter(data['X_train'],
                         data['y_train'],
                         batch_size=batch_size,
                         shuffle=True)

    test_dataiter = NDArrayIter(data['X_test'],
                         data['y_test'],
                         batch_size=batch_size,
                         shuffle=False)

    solver = Solver(model,
                    train_dataiter,
                    test_dataiter,
                    num_epochs=10,
                    init_rule='gaussian',
                    init_config={
                        'stdvar': 0.001
                    },
                    update_rule='sgd_momentum',
                    optim_config={
                        'learning_rate': 1e-3,
                        'momentum': 0.9
                    },
                    verbose=True,
                    print_every=20)
    solver.init()
    solver.train()
Esempio n. 2
0
def main(args):
    # Define a 2-layer perceptron
    MLP = builder.Sequential(
        builder.Affine(512),
        builder.ReLU(),
        builder.Affine(10)
    )

    # Cast the definition to a model compatible with minpy solver
    model = builder.Model(MLP, 'softmax', (3 * 32 * 32,))

    data = get_CIFAR10_data(args.data_dir)
    data['X_train'] = data['X_train'].reshape([data['X_train'].shape[0], 3 * 32 * 32])
    data['X_val'] = data['X_val'].reshape([data['X_val'].shape[0], 3 * 32 * 32])
    data['X_test'] = data['X_test'].reshape([data['X_test'].shape[0], 3 * 32 * 32])

    train_dataiter = NDArrayIter(data['X_train'],
                         data['y_train'],
                         batch_size=100,
                         shuffle=True)

    test_dataiter = NDArrayIter(data['X_test'],
                         data['y_test'],
                         batch_size=100,
                         shuffle=False)

    solver = Solver(model,
                    train_dataiter,
                    test_dataiter,
                    num_epochs=10,
                    init_rule='gaussian',
                    init_config={
                        'stdvar': 0.001
                    },
                    update_rule='sgd_momentum',
                    optim_config={
                        'learning_rate': 1e-5,
                        'momentum': 0.9
                    },
                    verbose=True,
                    print_every=20)
    solver.init()
    solver.train()
Esempio n. 3
0
import minpy.nn.model_builder as builder

'''
  Network In Network

  Reference:
  Min Lin, Qiang Chen, Shuicheng Yan, Network In Network
'''
network_in_network = builder.Sequential(
  builder.Reshape((3, 32, 32)),
  builder.Convolution((5, 5), 192, pad=(2, 2)),
  builder.ReLU(),
  builder.Convolution((1, 1), 160),
  builder.ReLU(),
  builder.Convolution((1, 1), 96),
  builder.ReLU(),
  builder.Pooling('max', (3, 3), (2, 2), (1, 1)),
  builder.Dropout(0.5),
  builder.Convolution((5, 5), 192, pad=(2, 2)),
  builder.ReLU(),
  builder.Convolution((1, 1), 192),
  builder.ReLU(),
  builder.Convolution((1, 1), 192),
  builder.ReLU(),
  builder.Pooling('avg', (3, 3), (2, 2), (1, 1)),
  builder.Dropout(0.5),
  builder.Convolution((3, 3), 192, pad=(1, 1)),
  builder.ReLU(),
  builder.Convolution((1, 1), 192),
  builder.ReLU(),
  builder.Convolution((1, 1), 10),
Esempio n. 4
0
import minpy.nn.model_builder as builder
'''
  Network In Network

  Reference:
  Min Lin, Qiang Chen, Shuicheng Yan, Network In Network
'''
network_in_network = builder.Sequential(
    builder.Reshape((3, 32, 32)), builder.Convolution((5, 5), 192, pad=(2, 2)),
    builder.ReLU(), builder.Convolution((1, 1), 160), builder.ReLU(),
    builder.Convolution((1, 1), 96), builder.ReLU(),
    builder.Pooling('max', (3, 3), (2, 2)), builder.Dropout(0.5),
    builder.Convolution((5, 5), 192, pad=(2, 2)), builder.ReLU(),
    builder.Convolution((1, 1), 192), builder.ReLU(),
    builder.Convolution((1, 1), 192), builder.ReLU(),
    builder.Pooling('avg', (3, 3), (2, 2)), builder.Dropout(0.5),
    builder.Convolution((3, 3), 192, pad=(1, 1)), builder.ReLU(),
    builder.Convolution((1, 1), 192), builder.ReLU(),
    builder.Convolution((1, 1), 10), builder.ReLU(),
    builder.Pooling('avg', (8, 8)), builder.Reshape((10, )))
'''
  Residual Network

  Reference:
  Kaiming He, Xiangyu Zhang, Shaoqing Ren, Jian Sun. "Deep Residual Learning for Image Recognition"
'''


def residual_network(n):
    '''
    n: the network contains 6 * n + 2 layers, including 6 * n + 1 convolution layers and 1 affine layer