def sine_training(): n = NeuralNet([1, 5, 1]) sines = get_sines(10) testing_data = next(sines) for i in range(1000): x, y = next(sines) n.train(x, y, 10, 1, testing_data=testing_data) # validation x, y = next(sines) hx = n.predict(x) errors = [] print('doing validation---------------------------') for x, y, y_predicted in zip(x, y, hx): errors.append(abs(y[0] - y_predicted[0]) / y[0]) print(x[0], y[0], y_predicted[0]) print(sum(errors) / len(errors)) x = np.reshape([2 * math.pi * i/1000 for i in range(1000)], (1000, 1)) y = [(i[0] - 0.5)*2 for i in n.predict(x)] y_actual = [i[0] for i in np.sin(x)] plt.plot(x, y_actual) plt.hold(True) plt.plot(x, y) plt.show()
def sine_training(): n = NeuralNet([1, 5, 1]) sines = get_sines(10) testing_data = next(sines) for i in range(1000): x, y = next(sines) n.train(x, y, 10, 1, testing_data=testing_data) # validation x, y = next(sines) hx = n.predict(x) errors = [] print('doing validation---------------------------') for x, y, y_predicted in zip(x, y, hx): errors.append(abs(y[0] - y_predicted[0]) / y[0]) print(x[0], y[0], y_predicted[0]) print(sum(errors) / len(errors)) x = np.reshape([2 * math.pi * i / 1000 for i in range(1000)], (1000, 1)) y = [(i[0] - 0.5) * 2 for i in n.predict(x)] y_actual = [i[0] for i in np.sin(x)] plt.plot(x, y_actual) plt.hold(True) plt.plot(x, y) plt.show()
def validate(reader, weights): data_stream = reader.get(30, mode='validation') n = NeuralNet(metadata['layers']) n.weights = weights counter = 0 matches = 0 for x, y in data_stream: counter += x.shape[0] predicted = n.predict(x) p_digits = np.argmax(predicted, axis=1) y_digits = np.argmax(y, axis=1) accuracy = sum([1 if i == j else 0 for i, j in zip(p_digits, y_digits)]) / len(p_digits) print 'predicted-\n', p_digits print 'actual-\n', y_digits print('accuracy-{0}%'.format(round(accuracy * 100, 2))) return None # Let's just run only one loop for the time being