Ich habe versucht, ein Modell eines neuronalen Netzes zu erstellen, das den ValueError zwischen der erwarteten und der tatsächlichen Ausgabe auf der Konsole ausgibt. Aber immer wenn ich versucht habe, das Programm auszuführen, wird folgender Fehler auf der Konsole angezeigt: ValueError: shapes (5,6) and (5,6) not aligned: 6 (dim 1) != 5 (dim 0).
Ich habe mehrfach versucht das Problem zu lösen aber jedesmal leider ohne Erfolg. Aus diesem Grund wäre ich euch sehr dankbar, falls ihr mir helfen würdet.
Viele Grüße
Das ist der Code:
Code: Alles auswählen
import numpy as np
X = (Feed rate (fa),Cutting speed (vc),Gangzahl (zo),Heat flux (q),Energy (E)), y = Grinding burn
X = np.array(([0.100,0.300,0.500,0.100,0.500,0.300], [65.000,65.000,65.000,65.000,65.000,35.000], [1.000,1.000,1.000,3.000,3.000,1.000], [1388.830,1279.338,1635.627,1779.128,5905.937,974.872],[10.032,13.176,21.846,4.284,26.295,18.646]), dtype=float)
y = np.array(([1.000], [1.000], [1.000],[1.000],[3.000],[1.000]), dtype=float)
class Training (object):
def __init__(self):
#parameters
self.inputSize = 5
self.outputSize = 1
self.hiddenSize = 6
#weights
self.W1 = np.random.randn(self.inputSize, self.hiddenSize) # weight matrix from input to hidden layer
self.W2 = np.random.randn(self.hiddenSize, self.outputSize) # weight matrix from hidden to output layer
def feedForward(self, X):
#forward propogation through the network
self.z = np.dot(X, self.W1) #dot product of X (input) and first set of weights
self.z2 = self.sigmoid(self.z) #activation function
self.z3 = np.dot(self.z2, self.W2) #dot product of hidden layer (z2) and second set of weights
output = self.sigmoid(self.z3)
return output
def sigmoid(self, s, deriv=False):
if (deriv == True):
return s * (1 - s) #derivitation of sigmoid function
return 1/(1 + np.exp(-s)) #actual sigmoid function
def backward(self, X, y, output):
#backward propogation through the network
self.output_error = y - output # error in output
self.output_delta = self.output_error * self.sigmoid(output, deriv=True)
self.z2_error = self.output_delta.dot(self.W2.T) #z2 error: how much our hidden layer weights contribute to output error
self.z2_delta = self.z2_error * self.sigmoid(self.z2, deriv=True) #applying derivative of sigmoid to z2 error
self.W1 += X.T.dot(self.z2_delta) # adjusting first set (input -> hidden) weights
self.W2 += self.z2.T.dot(self.output_delta) # adjusting second set (hidden -> output) weights
def train(self, X, y):
output = self.feedForward(X)
self.backward(X, y, output)
NN = Training ()
for i in range(1000): #trains the NN 1000 times
if (i % 100 == 0):
print("Loss: " + str(np.mean(np.square(y - NN.feedForward(X)))))
NN.train(X, y)
print("Input: " + str(X))
print("Actual Output: " + str(y))
print("Loss: " + str(np.mean(np.square(y - NN.feedForward(X)))))
print("\n")
print("Predicted Output: " + str(NN.feedForward(X)))