Dieser Artikel stellt hauptsächlich Pythons Methode zur flexiblen Definition der neuronalen Netzwerkstruktur basierend auf Numpy vor. Er analysiert die Prinzipien der neuronalen Netzwerkstruktur und die spezifische Implementierungsmethode von Python und beinhaltet verwandte Bedienfähigkeiten bei der Verwendung von Numpy Erweiterung zum Ausführen mathematischer Operationen in Python. Freunde können sich darauf beziehen
Dieser Artikel beschreibt, wie Python die neuronale Netzwerkstruktur basierend auf Numpy flexibel definieren kann. Teilen Sie es als Referenz mit allen. Die Details lauten wie folgt:
Mit Numpy können Sie die Struktur des neuronalen Netzwerks flexibel definieren und auch die leistungsstarke Matrixoperationsfunktion von Numpy anwenden!
1. Verwendung
1).
Beschreibung:
Anzahl der Eingabeschichtknoten: 3
'''示例一''' nn = NeuralNetworks([3,4,2]) # 定义神经网络 nn.fit(X,y) # 拟合 print(nn.predict(X)) #预测
2). -schichtiges neuronales Netzwerk:
Beschreibung:
Anzahl der Knoten der Eingabeschicht: 3
'''示例二''' nn = NeuralNetworks([3,5,7,4,2]) # 定义神经网络 nn.fit(X,y) # 拟合 print(nn.predict(X)) #预测
Anzahl der Knoten der verborgenen Schicht 3: 4
Anzahl der Knoten der Ausgabeschicht: 2
2. Implementierung
Die folgende Implementierungsmethode ist mein eigenes (@ hhh5460) Original. Wichtige Punkte:
dtype=object
Der vollständige Code unten ist, wie ich gelernt habe Maschinelles Lernen aus dem Stanford-Tutorial, komplett von mir getippt:
import numpy as np class NeuralNetworks(object): '''''' def __init__(self, n_layers=None, active_type=None, n_iter=10000, error=0.05, alpha=0.5, lamda=0.4): '''搭建神经网络框架''' # 各层节点数目 (向量) self.n = np.array(n_layers) # 'n_layers必须为list类型,如:[3,4,2] 或 n_layers=[3,4,2]' self.size = self.n.size # 层的总数 # 层 (向量) self.z = np.empty(self.size, dtype=object) # 先占位(置空),dtype=object !如下皆然 self.a = np.empty(self.size, dtype=object) self.data_a = np.empty(self.size, dtype=object) # 偏置 (向量) self.b = np.empty(self.size, dtype=object) self.delta_b = np.empty(self.size, dtype=object) # 权 (矩阵) self.w = np.empty(self.size, dtype=object) self.delta_w = np.empty(self.size, dtype=object) # 填充 for i in range(self.size): self.a[i] = np.zeros(self.n[i]) # 全零 self.z[i] = np.zeros(self.n[i]) # 全零 self.data_a[i] = np.zeros(self.n[i]) # 全零 if i < self.size - 1: self.b[i] = np.ones(self.n[i+1]) # 全一 self.delta_b[i] = np.zeros(self.n[i+1]) # 全零 mu, sigma = 0, 0.1 # 均值、方差 self.w[i] = np.random.normal(mu, sigma, (self.n[i], self.n[i+1])) # # 正态分布随机化 self.delta_w[i] = np.zeros((self.n[i], self.n[i+1])) # 全零
Das obige ist der detaillierte Inhalt vonBeispiele für Numpys flexible Definition der neuronalen Netzwerkstruktur in Python. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!