Heim  >  Artikel  >  Backend-Entwicklung  >  So implementieren Sie ein Perzeptron in Python

So implementieren Sie ein Perzeptron in Python

php中世界最好的语言
php中世界最好的语言Original
2017-12-20 13:10:271718Durchsuche

Wir wissen, dass das Perzeptron das einfachste neuronale Netzwerk mit nur einer Schicht ist. Perzeptrone sind Maschinen, die das Verhalten biologischer Neuronen simulieren. Die Lehre, die ich Ihnen dieses Mal bringe, ist die Verwendung von Python zur Implementierung des Perzeptrons. Das Modell lautet wie folgt.

Bei einer n-dimensionalen Eingabe sind w und b Parameter, w ist das Gewicht, jede Eingabe entspricht einem Gewicht und b ist der Bias-Term, der aus den Daten trainiert werden muss.

Aktivierungsfunktion Es gibt viele Möglichkeiten für die Aktivierungsfunktion des Perzeptrons. Beispielsweise können wir die folgende Schrittfunktion f als Aktivierungsfunktion wählen:

Tatsächlich kann das Perzeptron zu jeder passen lineare Funktion. Jedes lineare Klassifizierungs- oder lineare Regressionsproblem kann mithilfe von Perzeptronen gelöst werden. Aber das Perzeptron kann die XOR-Operation nicht implementieren, und natürlich können nicht alle linearen Klassifikatoren die XOR-Operation implementieren.

Die sogenannte XOR-Operation:

Für das obige Bild können wir keine gerade Linie finden, die die Klassen 0 und 1 trennen kann. Für die und-Operation kann das Perzeptron implementiert werden, und wir können eine gerade Linie finden, um es in zwei Teile zu teilen. .

Für und Betrieb:

Perceptron-Training

Initialisieren Sie zunächst zufällig das Gewicht w und den Bias b auf eine sehr kleine Zahl und aktualisieren Sie dann während des Trainings kontinuierlich w und den Wert von B.

1. Initialisieren Sie die Gewichtung auf 0 oder eine kleine Zufallszahl
2. Führen Sie für jede Trainingsprobe x(i) die folgenden Schritte aus:

Berechnen Sie den Ausgabewert y^.

Gewichte aktualisieren

Unter anderem verwendet

das Perzeptron, um die und-Operation zu implementieren. Der spezifische Code lautet wie folgt:

# -*- coding: utf-8 -*-
# python 3.4
import numpy as np
from random import choice
from sklearn import cross_validation
from sklearn.linear_model import LogisticRegression
'''''

1. Initialisieren Sie die Gewichte auf 0 oder eine kleine Zufallszahl

2. Führen Sie für jede Trainingsprobe x(i) die folgenden Schritte aus:

Berechnen Sie den Ausgabewert y^ .

Gewichte aktualisieren

'''
def load_data():
 input_data=[[1,1], [0,0], [1,0], [0,1]]
 labels=[1,0,0,0]
 return input_data,labels
  
   
def train_pre(input_data,y,iteration,rate):
 #===========================
 '''''

Parameter:

input_data: Eingabedaten

y: Labelliste

Iteration: Anzahl von Trainingsrunden

Rate: Lernrate

 '''
 #============================
 unit_step = lambda x: 0 if x < 0 else 1
 w=np.random.rand(len(input_data[0]))#随机生成[0,1)之间,作为初始化w
 bias=0.0#偏置
   
   
 for i in range(iteration):
  samples= zip(input_data,y)
  for (input_i,label) in samples:#对每一组样本
   #计算f(w*xi+b),此时x有两个
   result=input_i*w+bias
   result=float(sum(result))
   y_pred=float(unit_step(result))#计算输出值 y^
   w=w+rate*(label-y_pred)*np.array(input_i)#更新权重
  
   bias=rate*(label-y_pred)#更新bias
 return w,bias  
  
   
def predict(input_i,w,b):
 unit_step = lambda x: 0 if x < 0 else 1#定义激活函数
 result=result=result=input_i*w+b
 result=sum(result)
 y_pred=float(unit_step(result))
 print(y_pred)
   
if __name__==&#39;__main__&#39;:
 input_data,y=load_data()
 w,b=train_pre(input_data,y,20,0.01)
 predict([1,1],w,b)



Ich glaube, dass Sie die Methode beherrschen, nachdem Sie diese Fälle gelesen haben Weitere spannende Inhalte finden Sie unter PHP Chinesisch. Andere verwandte Artikel online!

Verwandte Lektüre:

Detailliertes Codebeispiel, wie PHP die Stack-Datenstruktur und den Bracket-Matching-Algorithmus implementiert

Am beliebtesten Code in PHP Einfacher String-Matching-Algorithmus, PHP-Matching-Algorithmus_PHP-Tutorial

Das einfachste String-Matching-Algorithmus-Tutorial in PHP

Das obige ist der detaillierte Inhalt vonSo implementieren Sie ein Perzeptron in Python. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn