0% found this document useful (0 votes)
12 views2 pages

ML 6

Uploaded by

wooyoung654
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
12 views2 pages

ML 6

Uploaded by

wooyoung654
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 2

import numpy as np

# Define sigmoid function


def sigmoid(x):
return 1 / (1 + np.exp(-x))

# Define derivative of sigmoid function


def sigmoid_derivative(x):
return x * (1 - x)

# Input datasets
inputs = np.array([[0, 0], [0, 1], [1, 0], [1, 1]])
expected_output = np.array([[0], [1], [1], [0]])

epochs = 10000
lr = 0.1

inputLayerNeurons, hiddenLayerNeurons, outputLayerNeurons = 2, 2, 1

# Random weights and bias initialization


hidden_weights = np.random.uniform(size=(inputLayerNeurons, hiddenLayerNeurons))
hidden_bias = np.random.uniform(size=(1, hiddenLayerNeurons))
output_weights = np.random.uniform(size=(hiddenLayerNeurons, outputLayerNeurons))
output_bias = np.random.uniform(size=(1, outputLayerNeurons))

print("Initial hidden weights:")


print(hidden_weights)
print("Initial hidden biases:")
print(hidden_bias)
print("Initial output weights:")
print(output_weights)
print("Initial output biases:")
print(output_bias)

# Training algorithm
for _ in range(epochs):
# Forward Propagation
hidden_layer_activation = np.dot(inputs, hidden_weights)
hidden_layer_activation += hidden_bias
hidden_layer_output = sigmoid(hidden_layer_activation)

output_layer_activation = np.dot(hidden_layer_output, output_weights)


output_layer_activation += output_bias
predicted_output = sigmoid(output_layer_activation)

# Backpropagation
error = expected_output - predicted_output
d_predicted_output = error * sigmoid_derivative(predicted_output)

error_hidden_layer = d_predicted_output.dot(output_weights.T)
d_hidden_layer = error_hidden_layer * sigmoid_derivative(hidden_layer_output)

# Updating Weights and Biases


output_weights += hidden_layer_output.T.dot(d_predicted_output) * lr
output_bias += np.sum(d_predicted_output, axis=0, keepdims=True) * lr
hidden_weights += inputs.T.dot(d_hidden_layer) * lr
hidden_bias += np.sum(d_hidden_layer, axis=0, keepdims=True) * lr

print("\nFinal hidden weights:")


print(hidden_weights)
print("Final hidden bias:")
print(hidden_bias)
print("Final output weights:")
print(output_weights)
print("Final output bias:")
print(output_bias)

# Output from neural network after training


print("\nOutput from neural network after 10,000 epochs:")
print(predicted_output)

You might also like