Der vom durch Scikit-Learn implementierten mehrschichtigen Perzeptron (MLP Classifer) vorhergesagte Inhalt stimmte nicht mit der Vorhersage des selbst erstellten neuronalen Netzwerks unter Verwendung der im Voraus gelernten Gewichte und Bias-Matrix überein.
Ich habe die Eingabedaten nicht standardisiert ...
import numpy as np
import os
import sys
Pandas als pd # -Bibliothek importieren, die dataFrame verarbeitet
from math import exp, expm1
input = [[Array von Eingabedaten]]
input = np.array(input)
df = pd.read_csv ("Daten zur Standardisierung von Eingabedaten (Daten beim Training)")
df_x = pd.get_dummies (Spalte, in der Sie Dummy-Variablen generieren möchten)
# Standardisierung! (Ich habe hier vergessen)
sc = StandardScaler()
sc.fit_transform(df_x)
input = sc.transform(input)
Bias0 = pd.read_csv ("Bias-CSV-Ausgabe von MLP Classiefer", Header = Keine)
bias0 = bias0.iloc[1:,1:].as_matrix()
weight0 = pd.read_csv ("weight csv output from MLP Classiefer", header = None)
weight0 = weight0.iloc[1:,1:].as_matrix()
# Gewicht / Eingabe + Vorspannung
layer0 = np.dot(weight0.T, dummy.T) + bias0
# Aktivierung der verborgenen Schicht. Diesmal wurde es durch die Rampenfunktion aktiviert.
layer0 = np.clip(layer0, 0, np.finfo(layer0.dtype).max, out=layer0)
Lassen Sie nur in der verborgenen Schicht die lineare Verbindung von Eingabe und Gewicht durch die Aktivierungsfunktion fließen. .. .. In der letzten Ausgabeschicht, aktiviert durch die Sigmoid-Funktion
output_layer = np.dot (Gewicht der letzten verborgenen Schicht, Dateneingabe in die letzte verborgene Schicht) + Bias der letzten verborgenen Schicht
# Aktiviert durch Sigmoidfunktion
1 / (1 + exp(-output_layer[0, 0]))
Ich denke, dass es hier [0, 0] ist, weil es sich um binäre Probleme handelt.
Recommended Posts