深度学习-感知机模型---思路图解+python代码

感知机的理解

对深度学习中的感知机的理解可以用下图说明:
在这里插入图片描述
它的目标在于尽可能让预测值r与真实值y接近,或者完全相等,即最小化y与r的差异delta。
而激活函数是可以任意选择的,关键在于线性处理中的w和b如何确定。
通过链式求导法则,可以求出w的变化而导致delta的变化幅度,同样可以求出b的变化而导致delta的变化幅度。
也就是更改w或b,就可以改变delta。那么反过来,改变delta,也就可以改变w和b。
所以,通过确定delta来确定w和b。

感知机的实现代码

"""
创建感知机类
属性是激活函数,学习率,权重,偏置项
方法是
1.初始化:传入激活函数,学习率,权重个数;初始化权重,偏置项为0
2.预测:传入一个样本,输出一个预测值
3.更新权重和偏置项:传入预测值,计算新的权重和偏置项
4.打印:打印权重,偏置项
"""


class perceptron(object):
    def __init__(self, w_num, rate, activator):
        """
        初始化感知机
        :param w_num: 权重个数
        :param rate: 学习率
        :param activator: 激活函数
        """
        self.rate = rate    #传入学习率
        self.activator = activator  #传入激活函数
        self.bias = 0.0 #偏置项初始化为0
        self.weights = [0.0 for x in range(w_num)]  #权重初始化为0

    def predict(self, sample):
        """
        预测一个样本
        :param sample: 被预测的一个样本
        :return: 通过激活函数后的预测值
        """
        sum = 0
        for feature, weight in zip(sample, self.weights):   #实现wx
            sum += feature * weight
        sum += self.bias    #实现wx+b
        y_predict = self.activator(sum) #激活
        return   y_predict  #返回预测值

    def update(self, sample, label):
        """
        用一个样本来更新权重和偏置项
        :param sample: 一个样本
        :param label: 它的标签
        :return:
        """
        output = self.predict(sample)   #得到该样本的预测值
        delta = label - output  #预测值和真实值的差异
        self.bias += delta * self.rate  #更新偏置项
        self.weights = [w + self.rate * delta * x for x, w in zip(sample, self.weights)]    #更新权重

    def print(self):
        print("weight\t:%s\n bias\t:%f\n" % (self.weights, self.bias))   #打印偏置项和权重


"""
创建迭代训练感知机函数
输入:指定感知机,多个样本点,对应的标签,指定迭代次数
输出:训练好的感知机,主要是权重,偏置项
"""


def activator(x):
    """
    创建激活函数-阶跃函数
    :param x: 自变量
    :return: 若x为正数,则返回值是1;若x为负数,则返回值是0
    """
    return 1 if x > 0 else 0


if __name__ == '__main__':
    samples = [[1, 1], [0, 0], [1, 0], [0, 1]]  #多个样本
    labels = [1, 0, 0, 0]   #标签
    p = perceptron(2, 0.1, activator)   #创建一个感知机,每个样本有2个特征,学习率是0.1,激活函数是activator

    for i in range(10): #迭代10次
        for sample, label in zip(samples, labels):  #每次迭代中,所有样本均参与
            p.update(sample, label) #每次用一个样本更新权重和偏置项

    p.print()   #打印10次迭代后的权重和偏置项

    #预测
    print('1 and 1 = %d' % p.predict([1, 1]))
    print('1 and 1 = %d' % p.predict([0, 0]))
    print('1 and 1 = %d' % p.predict([1, 0]))
    print('1 and 1 = %d' % p.predict([0, 1]))

感知机的代码图解

在这里插入图片描述
在这里插入图片描述

《图解深度学习》_张弥-完整书签

BAIDU:https://pan.baidu.com/s/1xHEsHIdDRFnX3ZErTPBsOQ
TiQu:vj0m

  • 0
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
算法图解-python.pdf》是一本介绍算法和使用Python语言实现算法的书籍。该书的目的是帮助读者了解算法的基本概念和原理,并通过Python编程实践来加深理解。 这本书以图解的方式呈现算法的思想和应用,使复杂的算法问题变得直观易懂。读者可以通过阅读该书,学习到各种常见的算法设计和解决思路,如排序算法、搜索算法、图算法等。同时,该书也会介绍一些高级算法,如动态规划、贪婪算法等,以及如何通过Python语言实现这些算法。 《算法图解-python.pdf》的内容结构清晰,通俗易懂。每个算法都有详细的解释和示例代码,读者可以通过实际编程来加深对算法的理解。此外,书中还包含了一些挑战性的练习题,供读者进一步巩固所学的知识。 通过阅读《算法图解-python.pdf》,读者不仅可以学习到算法的基本知识,还可以了解到如何运用Python语言实现这些算法。这对于刚开始学习算法Python编程的读者来说是非常有帮助的。无论是计算机科学专业的学生,还是对算法感兴趣的爱好者,都可以从这本书中受益匪浅。 总之,《算法图解-python.pdf》是一本很好的算法入门书籍,以图解Python编程为特色,适合各类读者学习和参考。通过阅读和实践,读者可以提高算法设计和编程实现的能力,为解决实际问题提供有效的思路和方法。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值