gpt4 book ai didi

python实现感知器

转载 作者:qq735679552 更新时间:2022-09-28 22:32:09 27 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章python实现感知器由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

上篇博客转载了关于感知器的用法,遂这篇做个大概总结,并实现一个简单的感知器,也为了加深自己的理解.

感知器是最简单的神经网络,只有一层。感知器是模拟生物神经元行为的机器。感知器的模型如下:

python实现感知器

给定一个n维的输入 ,其中w和b是参数,w为权重,每一个输入对应一个权值,b为偏置项,需要从数据中训练得到.

激活函数 感知器的激活函数可以有很多选择,比如我们可以选择下面这个阶跃函数f来作为激活函数:

python实现感知器

输出为:

python实现感知器

事实上感知器可以拟合任何线性函数,任何线性分类或线性回归的问题都可以用感知器来解决。但是感知器不能实现异或运算,当然所有的线性分类器都不可能实现异或操作.

所谓异或操作:

python实现感知器

二维分布图为

python实现感知器

对于上图,我们找不到一条直线可以将0,1类分开。对于and操作,感知器可以实现,我们可以找到一条直线把其分为两部分。.

对于and操作:

python实现感知器

对应的二维分布图为:

python实现感知器

感知器的训练  。

首先将权重w和 偏置b随机初始化为一个很小的数,然后在训练中不断更新w和b的值.

1.将权重初始化为 0 或一个很小的随机数 2.对于每个训练样本 x(i) 执行下列步骤:  。

   计算输出值 y^. 。

   更新权重 。

python实现感知器

其中 。

下面用感知器实现and操作,具体代码如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
# -*- 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.将权重初始化为 0 或一个很小的随机数
2.对于每个训练样本 x(i) 执行下列步骤:
  计算输出值 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__ = = '__main__' :
  input_data,y = load_data()
  w,b = train_pre(input_data,y, 20 , 0.01 )
  predict([ 1 , 1 ],w,b)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我.

原文链接:http://blog.csdn.net/momaojia/article/details/75127541 。

最后此篇关于python实现感知器的文章就讲到这里了,如果你想了解更多关于python实现感知器的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com