class NeuralNetwork: def __init__(self, x, y): self.input = x self.weights1 = np.random.rand(self.input.shape[1],4) self.weights2 = np.random.rand(4,1) self.y = y self.output = np.zeros(y.shape)
กำหนดค่า X และ y
import numpy as np
X = np.array([[0,0,1], [0,1,1], [1,0,1], [1,1,1]])
y = np.array([[0],[1],[1],[0]])X.shape, y.shape
สร้าง nn1 แล้ว Print ค่าต่างๆ
nn1 = NeuralNetwork(X,y)nn1.input.shape
print(nn1.input)
nn1.weights1.shape
print(nn1.weights1)
nn1.weights2.shape
print(nn1.weights2)
nn1.y.shape
print(nn1.y)
nn1.output.shape
print(nn1.output)
นิยาม Neural Network Class
ในขั้นตอนนี้เราจะทำการหาค่า learning_rate ตั้งแต่ 0.1 > 1.0 จึงต้องใส่ loss ตัวอื่นเพิ่มเข้าไป ดังตัวอย่างด้านล่าง
import numpy as np
def sigmoid(x): return 1.0/(1+ np.exp(-x))
def sigmoid_derivative(x): return x * (1.0 - x)
class NeuralNetwork: def __init__(self, x, y, l): self.input = x self.weights1 = np.random.rand(self.input.shape[1],4) self.weights2 = np.random.rand(4,1) self.y = y self.output = np.zeros(self.y.shape) self.learning_rate = l
จะ Train Model ของ learning_rate ตั้งแต่ 0.1 > 1.0 ดังตัวอย่างด้านล่าง
learning_rate = 0.1 nn = NeuralNetwork(X,y,learning_rate) loss=[] for i in range(1000): nn.feedforward() nn.backprop() loss.append(nn.loss())
learning_rate = 0.2 nn2 = NeuralNetwork(X,y,learning_rate) loss2=[] for i in range(1000): nn2.feedforward() nn2.backprop() loss2.append(nn2.loss2())
learning_rate = 0.3 nn3 = NeuralNetwork(X,y,learning_rate) loss3=[] for i in range(1000): nn3.feedforward() nn3.backprop() loss3.append(nn3.loss())
learning_rate = 0.4 nn4 = NeuralNetwork(X,y,learning_rate) loss4=[] for i in range(1000): nn4.feedforward() nn4.backprop() loss4.append(nn4.loss4())
learning_rate = 0.5 nn5 = NeuralNetwork(X,y,learning_rate) loss5=[] for i in range(1000): nn5.feedforward() nn5.backprop() loss5.append(nn5.loss5())
learning_rate = 0.6 nn6 = NeuralNetwork(X,y,learning_rate) loss6=[] for i in range(1000): nn6.feedforward() nn6.backprop() loss6.append(nn6.loss6())
learning_rate = 0.7 nn7 = NeuralNetwork(X,y,learning_rate) loss7=[] for i in range(1000): nn7.feedforward() nn7.backprop() loss7.append(nn7.loss7())
learning_rate = 0.8 nn8 = NeuralNetwork(X,y,learning_rate) loss8=[] for i in range(1000): nn8.feedforward() nn8.backprop() loss8.append(nn8.loss8())
learning_rate = 0.9 nn9 = NeuralNetwork(X,y,learning_rate) loss9=[] for i in range(1000): nn9.feedforward() nn9.backprop() loss9.append(nn9.loss9())
learning_rate = 1.0 nn10 = NeuralNetwork(X,y,learning_rate) loss10=[] for i in range(1000): nn10.feedforward() nn10.backprop() loss10.append(nn10.loss10())