Maison >développement back-end >tutoriel php >Comment implémenter un perceptron en python
On sait que le perceptron est le réseau de neurones le plus simple, avec une seule couche. Les perceptrons sont des machines qui simulent le comportement des neurones biologiques. L'enseignement que je vous apporte cette fois est donc de savoir comment utiliser Python pour implémenter le perceptron. Le modèle est le suivant.
Étant donné une entrée à n dimensions, w et b sont des paramètres, w est le poids, chaque entrée correspond à un poids et b est le terme de biais, qui doit être entraîné à partir des données.
Fonction d'activation Il existe de nombreux choix pour la fonction d'activation du perceptron. Par exemple, nous pouvons choisir la fonction d'étape f suivante comme fonction d'activation :
En fait, le perceptron peut s'adapter à n'importe quel. fonction linéaire, tout problème de classification linéaire ou de régression linéaire peut être résolu à l'aide de perceptrons. Mais le perceptron ne peut pas implémenter l’opération XOR, et bien sûr tous les classificateurs linéaires ne peuvent pas implémenter l’opération XOR.
L'opération dite XOR :
Pour l'image ci-dessus, nous ne trouvons pas de ligne droite pouvant séparer les classes 0 et 1. Pour le fonctionnement et le perceptron peut être implémenté, et on peut trouver une ligne droite pour le diviser en deux parties. .
Pour et fonctionnement :
Entraînement Perceptron
Initialisez d'abord de manière aléatoire le poids w et le biais b à un très petit nombre, puis mettez à jour continuellement w pendant l'entraînement et la valeur de b.
1. Initialisez le poids à 0 ou à un petit nombre aléatoire
2. Pour chaque échantillon d'entraînement x(i), effectuez les étapes suivantes :
Calculez la valeur de sortie. y^.
Mettre à jour les poids
Parmi eux,
utilise le perceptron pour implémenter le fonctionnement et Le code spécifique est le suivant :
# -*- 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. Initialisez les poids à 0 ou à un petit nombre aléatoire
2 Pour chaque échantillon d'entraînement x(i), effectuez les étapes suivantes :
Calculez la valeur de sortie y^. .
Mettre à jour les poids
''' 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): #=========================== '''''
Paramètres :
input_data : données d'entrée
y : liste d'étiquettes
itération : nombre de cycles d'entraînement
taux : taux d'apprentissage
''' #============================ 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__=='__main__': input_data,y=load_data() w,b=train_pre(input_data,y,20,0.01) predict([1,1],w,b)
Je crois que vous maîtrisez la méthode après avoir lu ces cas See More .Pour un contenu plus passionnant, veuillez prêter attention à php Chinois Autres articles connexes en ligne !
Lecture connexe :
Le tutoriel d'algorithme de correspondance de chaînes le plus simple en php
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!