def train(x, target, learning_rate, iterate): inputNodes = x.shape[-1] outputNodes = target.shape[-1] weight = np.full((inputNodes, outputNodes), 1.0) bias = np.zeros((outputNodes)) for i in range(iterate): predict = linear.forward(x, weight, bias) error = (predict - target) mse = np.average(error**2) print_summary(i, mse) error, weight_delta, bias_delta = linear.backward( x, error, weight, bias) weight -= (learning_rate * weight_delta) bias -= (learning_rate * bias_delta) return weight, bias
def train(x, target, learning_rate, iterate): inputNodes = x.shape[-1] outputNodes = target.shape[-1] h1_units = 25 h1_weight = np.random.normal(size=(inputNodes, h1_units)) h1_bias = np.zeros((h1_units)) h2_weight = np.random.normal(size=(h1_units, outputNodes)) h2_bias = np.zeros((outputNodes)) for i in range(iterate): y1 = linear.forward(x, h1_weight, h1_bias) s1 = sigmoid.forward(y1) y2 = linear.forward(s1, h2_weight, h2_bias) predict = sigmoid.forward(y2) error = (predict - target) mse = np.average(error**2) print_summary(i, mse) error = sigmoid.backward(y2, error) error, h2_weight_delta, h2_bias_delta = linear.backward( s1, error, h2_weight, h2_bias) h2_weight -= (learning_rate * h2_weight_delta) h2_bias -= (learning_rate * h2_bias_delta) error = sigmoid.backward(y1, error) error, h1_weight_delta, h1_bias_delta = linear.backward( x, error, h1_weight, h1_bias) h1_weight -= (learning_rate * h1_weight_delta) h1_bias -= (learning_rate * h1_bias_delta) return h1_weight, h1_bias, h2_weight, h2_bias
def train(x, target, learning_rate, iterate): inputNodes = x.shape[-1] outputNodes = target.shape[-1] weight = np.zeros((inputNodes, outputNodes)) bias = np.zeros((outputNodes)) for i in range(iterate): y = linear.forward(x, weight, bias) p = sigmoid.forward(y) p_error = (p - target) loss = np.average(p_error**2) print_numpy('w', weight) print_numpy('b', bias) print_numpy('y', y) print_numpy('p', p) print_numpy('L', loss) y_error = sigmoid.backward(y, p_error) x_error, w_error, b_error = linear.backward(x, y_error, weight, bias) weight -= (learning_rate * w_error) bias -= (learning_rate * b_error) print_numpy('~p', p_error) print_numpy('~y', y_error) print_numpy('~x', x_error) print_numpy('~w', w_error) print_numpy('~b', b_error) print('----- epoch : ', (i + 1), '------') return weight, bias
weight = np.full((inputNodes, outputNodes), 1.0) bias = np.zeros((outputNodes)) for i in range(iterate): predict = linear.forward(x, weight, bias) error = (predict - target) mse = np.average(error**2) print_summary(i, mse) error, weight_delta, bias_delta = linear.backward( x, error, weight, bias) weight -= (learning_rate * weight_delta) bias -= (learning_rate * bias_delta) return weight, bias train_x = np.array([[2.0]]) target = np.array([[11.0]]) weight, bias = train(train_x, target, learning_rate=0.1, iterate=5) predict = linear.forward(train_x, weight, bias) print('predict : ', predict)
h2_weight -= (learning_rate * h2_weight_delta) h2_bias -= (learning_rate * h2_bias_delta) error = sigmoid.backward(y1, error) error, h1_weight_delta, h1_bias_delta = linear.backward( x, error, h1_weight, h1_bias) h1_weight -= (learning_rate * h1_weight_delta) h1_bias -= (learning_rate * h1_bias_delta) return h1_weight, h1_bias, h2_weight, h2_bias train_x = np.array([[0, 0], [1, 1]]) target = np.array([[0], [1]]) h1_weight, h1_bias, h2_weight, h2_bias = train(train_x, target, learning_rate=0.01, iterate=5000) y1 = linear.forward(train_x, h1_weight, h1_bias) s1 = sigmoid.forward(y1) y2 = linear.forward(s1, h2_weight, h2_bias) predict = sigmoid.forward(y2) print('predict : ', predict)