def mlp(num_epochs, unit_count, hidden_layer_num=1): net = nn.Sequential() with net.name_scope(): for _ in range(hidden_layer_num): net.add(gluon.nn.Dense(unit_count, activation="relu")) net.add(gluon.nn.Dense(10)) net.initialize() ctx = utils.try_gpu() batch_size = 256 train_data, test_data = utils.load_data_fashion_mnist(batch_size) loss = gluon.loss.SoftmaxCrossEntropyLoss() trainer = gluon.Trainer(net.collect_params(), "sgd", {"learning_rate": 0.5}) return utils.train(train_data, test_data, net, loss, trainer, ctx, num_epochs=num_epochs)
def train_linear(num_epochs, batch_size=5): dataset = gdata.ArrayDataset(X, y) data_iter = gdata.DataLoader(dataset, batch_size, shuffle=True) net = nn.Sequential() with net.name_scope(): net.add(nn.Dense(1)) net.initialize() square_loss = gloss.L2Loss() ctx = utils.try_gpu() trainer = gluon.Trainer(net.collect_params(), 'sgd', {'learning_rate': 0.05}) return utils.train(data_iter, data_iter, net, square_loss, trainer, ctx, num_epochs=num_epochs)
def cnn(num_epochs): net = nn.Sequential() with net.name_scope(): net.add( nn.Conv2D(channels=20, kernel_size=5, activation="relu"), nn.MaxPool2D(pool_size=2, strides=2), nn.Conv2D(channels=50, kernel_size=3, activation="relu"), nn.MaxPool2D(pool_size=2, strides=2), nn.Flatten(), nn.Dense(128, activation="relu"), nn.Dense(10) ) net.initialize() ctx = utils.try_gpu() batch_size = 256 train_data, test_data = utils.load_data_fashion_mnist(batch_size) loss = gluon.loss.SoftmaxCrossEntropyLoss() trainer = gluon.Trainer(net.collect_params(), 'sgd', {'learning_rate': 0.5}) return utils.train(train_data, test_data, net, loss, trainer, ctx, num_epochs=num_epochs)