# e.g. number 3 will become [0, 0, 0, 1, 0, 0, 0, 0, 0, 0] y_train = np_utils.to_categorical(y_train) # same for test data : 10000 samples x_test = x_test.reshape(x_test.shape[0], 1, 28 * 28) x_test = x_test.astype('float32') x_test /= 255 y_test = np_utils.to_categorical(y_test) # to_categorical (what it does): # https://www.geeksforgeeks.org/python-keras-keras-utils-to_categorical/ # it is used to put the actual y value in the same format as the predicted y # value # Network net = NeuralNet() net.add(FCLayer(28 * 28, 100)) # input_shape=(1, 28*28) ; # output_shape=(1, 100) net.add(ActivationLayer(tanh, tanh_prime)) net.add(FCLayer(100, 50)) # input_shape=(1, 100) ; net.add(ActivationLayer(tanh, tanh_prime)) net.add(FCLayer(50, 10)) # input_shape=(1, 50) ; # output_shape=(1, 10) net.add(ActivationLayer(tanh, tanh_prime)) # train on 1000 samples # as we didn't implemented mini-batch GD, training will be pretty slow if we # update at each iteration on 60000 samples... net.use(mse, mse_prime) net.fit(x_train[0:1000], y_train[0:1000], epochs=35, learning_rate=0.1)
@author: ivicino """ import numpy as np from NeuralNet import NeuralNet from fclayer import FCLayer from activationlayer import ActivationLayer from activations import tanh, tanh_prime from losses import mse, mse_prime # training data x_train = np.array([[[0, 0]], [[0, 1]], [[1, 0]], [[1, 1]]]) y_train = np.array([[[0]], [[1]], [[1]], [[0]]]) # network net = NeuralNet() net.add(FCLayer(2, 3)) net.add(ActivationLayer(tanh, tanh_prime)) net.add(FCLayer(3, 1)) net.add(ActivationLayer(tanh, tanh_prime)) # train net.use(mse, mse_prime) net.fit(x_train, y_train, epochs=1000, learning_rate=0.05) # test out = net.predict(x_train) print(out)