[深度学习] (python)感知机的&操作实现

时间:2021年12月2日

class 感知机(object):
    def __init__(self, 输入值个数, 激活函数):
        self.权值 = [0.0 for _ in range(输入值个数)]
        self.激活函数 = 激活函数

    def 预测(self, 预测数据):
        激活值 = 0.0
        for i in range(len(self.权值)):
            激活值 += self.权值[i] * 预测数据[i]
        return self.激活函数(激活值)

    def 训练(self, 数据集, 训练次数, 学习率):
        for i in range(训练次数):
            for 数据 in 数据集:
                预测值 = self.预测(数据)
                self.更新权值(数据,预测值,学习率)

    def 更新权值(self, 数据, 预测值, 学习率):
        误差 = 数据[-1] - 预测值
        for i in range(len(self.权值)):
            # 感知机更新权值公式
            self.权值[i] += 学习率 * 误差 * 数据[i]


def 激活函数(激活值):
    return 1.0 if 激活值 >= 0.0 else 0.0


def 获取数据集():
    数据集 = [[-1, 1, 1, 1], [-1, 0, 0, 0], [-1, 1, 0, 0], [-1, 0, 1, 0]]
    return 数据集


def 训练与预测():
    输入层长度 = 3
    训练轮次 = 10
    学习率 = 0.1
    感知对象 = 感知机(输入层长度, 激活函数)
    数据集 = 获取数据集()
    感知对象.训练(数据集,训练轮次,学习率)
    return 感知对象

if __name__ == '__main__':
    # 训练好的感知对象
    感知对象 = 训练与预测()
    print(f"感知对象权值为:\n{感知对象.权值[0]}\n{感知对象.权值[1]}\n{感知对象.权值[2]}\n")
    print("新的预测:1&1 = ",感知对象.预测([-1,1,1]))

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值