Exemple #1
0
def nn(nfeature, nclass, nunits, lamb, seed, learning_rate, beta1, beta2,
       epsilon):
    np.random.seed(seed)
    model = NeuralNetwork.NeuralNetwork(nfeature)
    model.add_layer(nunits, "relu", lamb)
    model.add_layer(nclass, "softmax", lamb)
    optimizer = Optimizer.Adam(learning_rate, beta1, beta2, epsilon)
    model.compile("crossentropy", optimizer)
    return model
Exemple #2
0
def train_comparison(args, theta, dataset):
    hyper_params = {k: args[k] for k in ['b_size']}
    hyper_params['to_fix'] = [
    ]  # a selection of parameters can be fixed, e.g. the word embeddings
    # initialize optimizer with learning rate (other hyperparams: default values)
    opt = args['optimizer']
    if opt == 'adagrad':
        optimizer = Optimizer.Adagrad(theta,
                                      lr=args['learningrate'],
                                      lambda_l2=args['lambda'])
    elif opt == 'adam':
        optimizer = Optimizer.Adam(theta,
                                   lr=args['learningrate'],
                                   lambda_l2=args['lambda'])
    elif opt == 'sgd':
        optimizer = Optimizer.SGD(theta,
                                  lr=args['learningrate'],
                                  lambda_l2=args['lambda'])
    else:
        raise RuntimeError("No valid optimizer chosen")

    # train model
    evals = plain_train(optimizer,
                        dataset,
                        hyper_params,
                        n_epochs=args['n_epochs'],
                        outdir=args['out_dir'])

    # store learned model
    store_theta(
        theta, os.path.join(args['out_dir'], 'comparisonFinalModel.theta.pik'))

    # run final evaluation
    for name, tb in dataset.iteritems():
        print('Evaluation on ' + name + ' data (' + str(len(tb.examples)) +
              ' examples)')
        tb.evaluate(optimizer.theta, verbose=1)

    # create convergence plot
    for name, eval in evals.items():
        toplot = [e[key] for e in eval for key in e if 'loss' in key]
        plt.plot(xrange(len(toplot)), toplot, label=name)
    plt.legend()
    plt.title([key for key in eval[0].keys() if 'loss' in key][0])
    plt.savefig(os.path.join(args['out_dir'], 'comparisonConvergence.png'))
# Change random seed to get different random numbers: seed (integer)
# Change number of training data samples: ntrain up to 60000
# Change number of validation data samples: nvalid up to 10000
# Change learning rate for optimization: learning_rate >0
# Change number of iterations: niterations
seed = 10
ntrain = 6000
nvalid = 1000
learning_rate = 0.02
niteration = 40
# (1) Set up data
nclass = 10
Xtrain, Ytrain, Xvalid, Yvalid = load_mnist.load_mnist(ntrain, nvalid)
# (2) Define model
nfeature = Xtrain.shape[0]
np.random.seed(seed)
model = NeuralNetwork.NeuralNetwork(nfeature)
model.add_layer(128, "relu")
model.add_layer(nclass, "softmax")
# (3) Compile model
optimizer = Optimizer.Adam(learning_rate, 0.9, 0.999, 1e-7)
model.compile("crossentropy", optimizer)
model.summary()
# (4) Train model
history = model.fit(Xtrain, Ytrain, niteration)
# (5) Predictions and plotting
# plot data, loss, and animation of results
Yvalid_pred = model.predict(Xvalid)
plot_results.plot_data_mnist(Xtrain, Ytrain)
plot_results.plot_results_history(history, ["loss"])
plot_results.plot_results_mnist_animation(Xvalid, Yvalid, Yvalid_pred, 25)
import time

# (1) Set up data
ntrain = 6000
nvalid = 1000
nclass = 10
Xtrain,Ytrain,Xvalid,Yvalid = load_mnist.load_mnist(ntrain,nvalid)
# (2) Define model
nfeature = Xtrain.shape[0]
np.random.seed(10)
lamb = 0.0
model = NeuralNetwork.NeuralNetwork(nfeature)
model.add_layer(128,"relu",lamb)
model.add_layer(nclass,"softmax",lamb)
# (3) Compile model
optimizer = Optimizer.Adam(0.02,0.9,0.999,1e-7)
model.compile("crossentropy",optimizer)
model.summary()
# (4) Train model
epochs = 40
time_start = time.time()
history = model.fit(Xtrain,Ytrain,epochs,batch_size=ntrain,validation_data=(Xvalid,Yvalid))
time_end = time.time()
print("Train time: {}".format(time_end - time_start))
# (5) Predictions and plotting
# confusion matrix
print("Metrics for Validation Dataset")
Yvalid_pred = model.predict(Xvalid)
metrics.confusion_matrix(Yvalid,Yvalid_pred,nclass)
# plot loss, accuracy, and animation of results
plot_results.plot_results_history(history,["loss","valid_loss"])
Exemple #5
0
y_test = one_hot[50000:60000]
x_test = x_train[50000:60000]
x_train = x_train[:50000]

# initialize parameters
num_classes = y_train.shape[1]
hidden = 50
x_train = x_train.reshape(x_train.shape[0], 1, 28, 28)
x_test = x_test.reshape(x_test.shape[0], 1, 28, 28)
print(x_train.shape)

model = Model()
model.addlayer(ConvLayer(32, (3, 3)), name='conv1')
model.addlayer(Layers.ReLU(), name='relu1')
model.addlayer(Layers.Dropout(), name='dropout1')
model.addlayer(Layers.Flatten(), name='flatten')
model.addlayer(Layers.MulLayer(10), name="w1")
model.addlayer(Layers.AddLayer(10), name='b1')
model.addlayer(Layers.ReLU(), name='relu3')
model.addlayer(Layers.Dropout(0.5), name='dropout3')
model.addlayer(Layers.SoftmaxLayer(), name='softmax')

optimizer = Optimizer.Adam(batch_size=32)
model.train(x_train, y_train, optimizer, 10000, 0.01)

model.save()
print("--TRAIN EVAL--")
model.eval(x_train, y_train)
print("--TEST EVAL--")
model.eval(x_test, y_test)