Maison >développement back-end >tutoriel php >Comment implémenter un perceptron en python

Comment implémenter un perceptron en python

php中世界最好的语言
php中世界最好的语言original
2017-12-20 13:10:271807parcourir

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__==&#39;__main__&#39;:
 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 :

Exemple de code détaillé de la façon dont PHP implémente la structure de données de pile et l'algorithme de correspondance entre crochets

Le plus populaire code en PHP Algorithme de correspondance de chaînes simple, algorithme de correspondance php_Tutoriel PHP

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn