国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Python實現感知器模型、兩層神經網絡

2020-02-16 11:10:51
字體:
來源:轉載
供稿:網友

本文實例為大家分享了Python實現感知器模型、兩層神經網絡,供大家參考,具體內容如下

python 3.4 因為使用了 numpy

這里我們首先實現一個感知器模型來實現下面的對應關系

[[0,0,1], ——- 0
[0,1,1], ——- 1
[1,0,1], ——- 0
[1,1,1]] ——- 1

從上面的數據可以看出:輸入是三通道,輸出是單通道。

這里的激活函數我們使用 sigmoid 函數 f(x)=1/(1+exp(-x))

其導數推導如下所示:

L0=W*X;
z=f(L0);
error=y-z;
delta =error * f'(L0) * X;
W=W+delta;

python 代碼如下:

import numpy as np#sigmoid functiondef nonlin(x, deriv = False):  if(deriv==True):    return x*(1-x)  return 1/(1+np.exp(-x))# input datasetX=np.array([[0,0,1],      [0,1,1],      [1,0,1],      [1,1,1]])# output datasety=np.array([[0,1,0,1]]).T#seed( ) 用于指定隨機數生成時所用算法開始的整數值,#如果使用相同的seed( )值,則每次生成的隨即數都相同,#如果不設置這個值,則系統根據時間來自己選擇這個值,#此時每次生成的隨機數因時間差異而不同。np.random.seed(1)  # init weight value with mean 0syn0 = 2*np.random.random((3,1))-1   for iter in range(1000):  # forward propagation  L0=X  L1=nonlin(np.dot(L0,syn0))  # error  L1_error=y-L1  L1_delta = L1_error*nonlin(L1,True)  # updata weight  syn0+=np.dot(L0.T,L1_delta)print("Output After Training:")print(L1)

從輸出結果可以看出基本實現了對應關系。

下面再用兩層網絡來實現上面的任務,這里加了一個隱層,隱層包含4個神經元。

import numpy as npdef nonlin(x, deriv = False):  if(deriv == True):    return x*(1-x)  else:    return 1/(1+np.exp(-x))#input datasetX = np.array([[0,0,1],       [0,1,1],       [1,0,1],       [1,1,1]])#output datasety = np.array([[0,1,1,0]]).T#the first-hidden layer weight valuesyn0 = 2*np.random.random((3,4)) - 1 #the hidden-output layer weight valuesyn1 = 2*np.random.random((4,1)) - 1 for j in range(60000):  l0 = X        #the first layer,and the input layer   l1 = nonlin(np.dot(l0,syn0))   #the second layer,and the hidden layer  l2 = nonlin(np.dot(l1,syn1))   #the third layer,and the output layer  l2_error = y-l2      #the hidden-output layer error  if(j%10000) == 0:    print "Error:"+str(np.mean(l2_error))  l2_delta = l2_error*nonlin(l2,deriv = True)  l1_error = l2_delta.dot(syn1.T)     #the first-hidden layer error  l1_delta = l1_error*nonlin(l1,deriv = True)  syn1 += l1.T.dot(l2_delta)  syn0 += l0.T.dot(l1_delta)print "outout after Training:"print l2

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林站長站。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 湟中县| 平塘县| 儋州市| 长葛市| 灌阳县| 德清县| 朔州市| 慈溪市| 莎车县| 南乐县| 蓝田县| 长白| 洮南市| 喀喇沁旗| 阳朔县| 汝阳县| 东源县| 墨玉县| 习水县| 韶山市| 北宁市| 永德县| 永川市| 民丰县| 隆德县| 永定县| 图片| 寻乌县| SHOW| 左权县| 淅川县| 哈密市| 科技| 磐石市| 明光市| 望城县| 沈阳市| 三门县| 龙门县| 宕昌县| 张家港市|