Dec-11-2018, 03:48 PM
Hello ,
I have this code of neural network:
I have this code of neural network:
import numpy as np #X = np.array(([1 , 0],),) #yd = np.array(([1],), ) #xPredicted = np.array(([1 , 1]),) for i in range (1,200): for j in range (1,200): x1 = -10 +(0.1)*(i-1) x2 = -10 +(0.1)*(j-1) X= np.array(([x1, x2],),) #print(X) yd = np.array(([x1**2 + x2 +3],),) #print(yd) xPredicted = np.array(([1,1]), ) class Neural_Network(object): def __init__(self): #parameters self.inputSize = 2 self.outputSize = 1 self.hiddenSize = 2 #weights self.W1 = np.random.randn(self.inputSize, self.hiddenSize) # (2x2) weight matrix from input to hidden layer self.W2 = np.random.randn(self.hiddenSize, self.outputSize) # (2x1) weight matrix from hidden to output layer def forward(self, X): #forward propagation through our network self.H1 = np.dot(X, self.W1) # dot product of X (input) and the first set of 3x3 weights self.Y1 = self.sigmoid(self.H1) # the first activation function self.H2 = np.dot(self.Y1, self.W2) # dot product of the hidden layer and the second set of 3x1 weights Z = self.sigmoid(self.H2) # final activation function return Z def sigmoid(self, s): # activation function return 1/(1+np.exp(-s)) def sigmoidPrime(self, s): #derivative of sigmoid return s * (1 - s) def backward(self, X, yd, Z): # backward propagate through the network self.E_error = yd- Z # error in output self.Z_delta = self.E_error *self.sigmoidPrime(Z) # applying derivative of sigmoid to error self.Y1_error = self.Z_delta.dot(self.W2.T) # Y1 error: how much our hidden layer weights contributed to output error self.Y1_delta = self.Y1_error*self.sigmoidPrime(self.Y1) # applying derivative of sigmoid to Y2 error self.W1 += X.T.dot(self.Y1_delta) # adjusting the set (hidden --> input) weights self.W2 += self.Y1.T.dot(self.Z_delta) # adjusting the set (hidden --> output) weights def train(self, X, Z): Z = self.forward(X) self.backward(X, yd, Z) def predict(self): print ("Predicted data based on trained weights: "); print ("Input (scaled): \n" + str(xPredicted)); print ("Output: \n" + str(self.forward(xPredicted))); NN = Neural_Network() for k in range(100): # trains the NN 1,000 times print ("# " + str(k) + "\n") print ("Input (scaled): \n" + str(X)) print ("Actual Output: \n" + str(yd)) print ("Predicted Output: \n" + str(NN.forward(X))) print ("Loss: \n" + str((yd - NN.forward(X)))) print ("\n") NN.train(X, yd) NN.predict()I want to test the code for different values of X and Y for this recent I used the for loop :
for i in range (1,200): for j in range (1,200): x1 = -10 +(0.1)*(i-1) x2 = -10 +(0.1)*(j-1) X= np.array(([x1, x2],),) #print(X) yd = np.array(([x1**2 + x2 +3],),) #print(yd)My problem I don't obtain all the possibility of X and Y I have 200 possibility and one I run the code I just obtain one possibility .
Output:# 0
Input (scaled):
[[9.8 9.8]]
Actual Output:
[[108.84]]
Predicted Output:
[[0.56752375]]
Loss:
[[108.27247625]]
Predicted data based on trained weights:
Input (scaled):
[1 1]
Output:
[1.]
# 1
Input (scaled):
[[9.8 9.8]]
Actual Output:
[[108.84]]
Predicted Output:
[[1.]]
Loss:
[[107.84]]
Predicted data based on trained weights:
Input (scaled):
[1 1]
Output:
[1.]
# 2
Input (scaled):
[[9.8 9.8]]
Actual Output:
[[108.84]]
Predicted Output:
[[1.]]
Loss:
[[107.84]]
Predicted data based on trained weights:
Input (scaled):
[1 1]
Output:
[1.]
# 3
Input (scaled):
[[9.8 9.8]]
Actual Output:
[[108.84]]
Predicted Output:
[[1.]]
Loss:
[[107.84]]
Predicted data based on trained weights:
Input (scaled):
[1 1]
Output:
[1.]
Please who can help me.