def init_nn(): learning_rate = 0.001 nn = Sequential(learning_rate=learning_rate, epochs=50, batch_size=100, learning_rate_decay=0.95, weight_decay=0.001) nn.add(Dense(n=200, in_shape=train.shape[1])) nn.add(BatchNorm()) nn.add(Dense(n=100)) nn.add(BatchNorm()) nn.add(Dense(n=80)) nn.add(BatchNorm()) nn.add(Dense(n=20)) nn.add(BatchNorm()) nn.add(Dense(n=80)) nn.add(BatchNorm()) nn.add(Dense(n=100)) nn.add(BatchNorm()) nn.add(Dense(n=200)) nn.add(BatchNorm()) nn.add(Dense(n=10, activation="softmax")) nn.compile(loss="cross_entropy_softmax", optimiser="Adam") return nn
def model_SGD(X, y, verbose): nn = Sequential(learning_rate=learning_rate*0.5, epochs=epochs, batch_size=100, learning_rate_decay=0.95, weight_decay=0.01) nn.add(Dense(n=200, in_shape=X.shape[1])) nn.add(BatchNorm()) nn.add(Dense(n=100)) nn.add(BatchNorm()) nn.add(Dense(n=80)) nn.add(BatchNorm()) nn.add(Dense(n=40)) nn.add(BatchNorm()) nn.add(Dense(n=80)) nn.add(BatchNorm()) nn.add(Dense(n=100)) nn.add(BatchNorm()) nn.add(Dense(n=200)) nn.add(BatchNorm()) nn.add(Dense(n=10, activation="softmax")) nn.compile(loss="cross_entropy_softmax", optimiser="SGD") nn.fit(X, y, verbose) return nn
learning_rate = 0.001 nn = Sequential(learning_rate=learning_rate, epochs=100, batch_size=100, learning_rate_decay=0.95, weight_decay=0.001) nn.add(Dense(n=200, in_shape=train.shape[1])) nn.add(BatchNorm()) nn.add(Dense(n=100)) nn.add(BatchNorm()) nn.add(Dense(n=200)) nn.add(BatchNorm()) nn.add(Dense(n=10, activation="softmax")) nn.compile(loss="cross_entropy_softmax", optimiser="Adam") indices = list(range(len(train))) random.shuffle(indices) train = list(map(train.__getitem__, indices)) label = list(map(label.__getitem__, indices)) X = scale_data(train) y = np.array(onehot_labels(label), dtype=np.float64) nn.fit(X[0:50000], y[0:50000], verbose=True) print('Accuracy is: ' + str(accuracy(nn, X[50000:], label[50000:])))