Pythonでパーセプトロンを実装する方法

php中世界最好的语言
リリース: 2023-03-18 06:32:01
オリジナル
1777 人が閲覧しました

パーセプトロンは 1 つの層のみを備えた最も単純なニューラル ネットワークであることがわかっています。パーセプトロンは、生物学的ニューロンの動作をシミュレートするマシンです。そこで今回お届けするのは、Pythonを使ってパーセプトロンを実装する方法です。モデルは次のとおりです。

n 次元の入力が与えられた場合、w と b はパラメーター、w は重み、各入力は重みに対応し、b はデータからトレーニングする必要があるバイアス項です。

活性化関数 パーセプトロンの活性化関数には多くの選択肢があります。たとえば、次のステップ関数 f を活性化関数として選択できます:

実際、パーセプトロンは任意の線形関数、任意の線形分類、または線形に適合できます。回帰問題はすべてパーセプトロンを使用して解決できます。しかし、パーセプトロンは XOR 演算を実装できず、もちろんすべての線形分類器は XOR 演算を実装できません。

いわゆる XOR 演算:

上の図では、カテゴリ 0 と 1 を分離できる直線が見つかりません。および 演算については、パーセプトロンを実装でき、それを 2 つの部分に分割する直線を見つけることができます。 。

and 演算の場合:

パーセプトロンのトレーニング

まず、重み w とバイアス b を非常に小さな数にランダムに初期化し、トレーニング中に w と b の値を継続的に更新します。

1. 重みを 0 または小さな乱数に初期化します
2. 各トレーニング サンプル x(i) に対して、次の手順を実行します:

出力値 y^ を計算します。

ここで、重みを更新します。

以下の and 演算を実装するためにパーセプトロンが使用されます。具体的なコードは次のとおりです:

# -*- 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. 各トレーニング サンプル x(i) に対して、重みを 0 または小さな乱数に初期化します。次の手順:

計算 出力値 y^.

重みの更新

'''
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):
 #===========================
 '''''
ログイン後にコピー

パラメータ:

input_data: 入力データ

y: ラベルリスト

iteration: トレーニングラウンド数

rate: 学習率

 '''
 #============================
 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)
ログイン後にコピー


信じて見てください これらの事例を読んだ後は、その方法をマスターしたことになります。さらに興味深い情報については、php 中国語 Web サイトの他の関連記事に注目してください。


関連書籍:

PHP がスタック データ構造とブラケット マッチング アルゴリズムを実装する方法の詳細なコード例

PHP の最も単純な文字列マッチング アルゴリズム、PHP マッチング アルゴリズム_PHP チュートリアル

最も単純な文字列マッチング アルゴリズムのチュートリアルphp で

以上がPythonでパーセプトロンを実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート