zoukankan      html  css  js  c++  java
  • 斋藤康毅著的深度学习入门的学习记录 第二章 感知机

    第二章  感知机

    2.3 感知机的实现

    2.3.1 简单实现

      用python实现一个与门,先定义一个接收参数x1和x2的AND函数。

     1 # 与门:w1, w2, theta =0.5, 0.5, 0.7
     2 # 与非门:w1, w2, theta =-0.5, -0.5, -0.7
     3 # 或门:w1, w2, theta =m, n, 0  m和n任意正数
     4 
     5 def AND(x1, x2):
     6     w1, w2, theta =0.5, 0.5, 0.7
     7     tmp = x1*w1 + x2*w2
     8     if tmp <= theta:
     9         return 0
    10     elif tmp > theta:
    11         return 1
    12 
    13 y1=AND(0, 0)
    14 y2=AND(0, 1)
    15 y3=AND(1, 0)
    16 y4=AND(1, 1)
    17 print(y1,y2,y3,y4)

    2.3.2 导入权重和偏置

      刚才的与门比较容易理解,但是考虑到后续的神经网络,我们改写一个形式,采用权重和偏执的概念

     1 import numpy as np
     2 
     3 #与门
     4 def AND(x1,x2):
     5     x = np.array([x1, x2])    # 输入
     6     w = np.array([0.5, 0.5])  # 权重
     7     b = -0.7                  # 偏执
     8     y = np.sum(w*x) + b
     9     if y <= 0:
    10         return 0
    11     else:
    12         return 1
    13 
    14 #与非门
    15 def NAND(x1, x2):
    16     x = np.array([x1, x2])      # 输入
    17     w = np.array([-0.5, -0.5])  # 权重
    18     b = 0.7                     # 偏执
    19     y = np.sum(w * x) + b
    20     if y <= 0:
    21         return 0
    22     else:
    23         return 1
    24 
    25 #或门
    26 def OR(x1, x2):
    27     x = np.array([x1, x2])    # 输入
    28     w = np.array([0.5, 0.5])  # 权重
    29     b = -0.2                  # 偏执
    30     y = np.sum(w * x) + b
    31     if y <= 0:
    32         return 0
    33     else:
    34         return 1

     2.4 感知机的局限性

    2.4.1 异或门

      仅当x1或x2中的一方为1时,才会输出1(‘异或’是拒绝其他的意思),用前面介绍的感知机是无法实现这个异或门的。

    2.4.2 线性和非线性

      感知机的局限性就在于他只能表示由一条直线分割的空间。

      曲线分割的空间称其非线性空间,直线分割的称为线性空间

    2.5 多层感知机

      感知机可以叠加层,所以可以用叠加层来表示异或门。

    2.5.2 异或门的实现

      用之前定义的AND,NAND,OR函数来实现。

     1 def XOR(x1,x2):
     2     s1 = NAND(x1,x2)
     3     s2 = OR(x1,x2)
     4     y = AND(s1,s2)
     5     print(y)
     6     return y
     7 
     8 XOR(0,0)
     9 XOR(0,1)
    10 XOR(1,0)
    11 XOR(0,0)

    小结

      1、感知机是具有输入和输出的算法。

      2、感知机将权重和偏执设置为参数。

      3、使用感知机可以表示与或门等逻辑电路。

      4、异或门无法用单层感知机,需要两层。

      5、单层感知机只能表示线性空间,而多层感知机可以表示非线性空间。

      6、多层感知机理论上可以表示计算机。

  • 相关阅读:
    Jexus部署Asp.Net Core项目
    Docker 学习
    mysql 调优 (转)
    ZXHN H218N 超级管理员账号
    微擎遇到 请先更新或安装主模块后再安装插件 问题解决
    centos7 + php7
    PPTPD 服务搭建
    精心调制的Bash主题分享
    vue
    木马技术
  • 原文地址:https://www.cnblogs.com/aimoboshu/p/13687814.html
Copyright © 2011-2022 走看看