def test(self, x_test, y_test): print('\nTesting...') acc = 0 xs, ys = Matrix.shuffle(x_test, y_test) for i in range(len(xs)): guess = self.predict(xs[i]) if Matrix.arg_max(guess) == Matrix.arg_max(ys[i]): acc += 1 acc /= len(xs) print('Done testing! accuracy: {:.5f}%'.format(acc * 100)) return acc
def main(): nn = NeuralNetwork() nn.set_input_nodes(2) nn.add_layer(4, 'sigmoid') nn.add_layer(4, 'sigmoid') nn.add_layer(2, 'sigmoid') nn.set_lr(0.1) x_train = [] y_train = [] for i in range(1000): x_train.append([]) x_train[i].append(round(random.random())) x_train[i].append(round(random.random())) y_train.append(get_label(x_train[i])) print(len(x_train), len(x_train[0])) nn.train(x_train, y_train, 3) x_test = [] y_test = [] for i in range(1000): x_test.append([]) x_test[i].append(round(random.random())) x_test[i].append(round(random.random())) y_test.append(get_label(x_test[i])) nn.test(x_test, y_test) print() print('0 0 = {}'.format(Matrix.arg_max(nn.predict([0, 0])))) print('0 1 = {}'.format(Matrix.arg_max(nn.predict([0, 1])))) print('1 0 = {}'.format(Matrix.arg_max(nn.predict([1, 0])))) print('1 1 = {}'.format(Matrix.arg_max(nn.predict([1, 1])))) # nn.save('XOR.pickle') # model = NeuralNetwork.load('XOR.pickle') nn.save('model.json', format=True) model = NeuralNetwork.load('model.json') model.train(x_train, y_train, 3) print() print('0 0 = {}'.format(Matrix.arg_max(model.predict([0, 0])))) print('0 1 = {}'.format(Matrix.arg_max(model.predict([0, 1])))) print('1 0 = {}'.format(Matrix.arg_max(model.predict([1, 0])))) print('1 1 = {}'.format(Matrix.arg_max(model.predict([1, 1]))))