深度学习入门 基于python的理论和实践读书笔记(一)

mac2025-06-18  2

    书的pdf和源码需要的可以留言

    该书的前两章主要是简介和python的安装和使用,这里我就从第二章开始写下自己的读书笔记。

    第二章感知机 

1 概念

多个输入,一个输出

输入叫做输入信号

输出叫做输出信号,输出信号只有两种状态,就是被激活(传递信号),不被激活(不传递信号)

每个输入都要它自己的权重,输入信号乘以自己的权重相加就是输出信号,如果输出信号到达了某个界定值(称为阈值,常用θ表示

   

式子如下

2 逻辑门

这几类门在基础过程都学过,简单的回顾

与门(两个输入相同是为1,不同时为0)

或门(输入信号中只要有一个信号为1,结果都为1,两个输入信号都为0时结果才是0)

与非门(就是在与门的结果取非,就是1变0,0变1)

后面是python实现一下与门,很简单的,就是传递两个参数,然后乘以对应的权重,如果大于阈值返回为一,如果小于阈值返回为0。

def AND(x1,x2): w1,w2,theta = 0.5, 0.5, 0.7 temp=x1*w1+x2*w2 if temp<=theta: print(0) return 0 elif temp>theta: print(1) return 1 AND(0,0) AND(1,1) AND(1,0)

对于刚刚的阈值来讲,我们把它移到等式的右边和输入信号一边,我们把他将叫做偏置。式字变成这样子。

python代码

import numpy as np def AND(x1,x2): x = np.array([x1,x2]) w = np.array([0.5,0.5]) b = -0.7 temp = np.sum(w*x)+b if temp<=0: print(0) return 0 elif temp>0: print(1) return 1

权重和偏置的意义是不一样的

权重是控制输入信号重要性的参数,偏置是调整神经元被激活的容易度。

现在用python来实现与非门和或门

与非门

def NAND(x1,x2): x = np.array([x1,x2]) w = np.array([-0.5,-0.5]) b = 0.7 temp = np.sum(w*x)+b if temp<=0: print(0) return 0 elif temp>0: print(1) return 1

或门

def OR(x1,x2): x = np.array([x1,x2]) w = np.array([0.5,0.5]) b = -0.2 temp = np.sum(w*x)+b if temp<=0: print(0) return 0 elif temp>0: print(1) return 1

异或门       两个输入取值有且仅有一个输入为的时候取值为1,其他时候情况取值为0。异或门不能线性分割结果。异或门用与非门和或门相与。就可以得到异或门。 python实现代码

def XOR(x1,x2): s1 = NAND(x1,x2) s2 = OR(x1,x2) y=AND(s1,s2) return y

       多层感知机 像与门或门这样的就是单层的感知机,像与或门这样子叠加了多层的叫做多层感知机。

感知机是基础很重要。下一章神经网络。加油。

 

最新回复(0)