《机器学习》西瓜书课后题5.5

本文记录了《机器学习》课后题5.5的解答,主要涉及使用Python实现BP神经网络进行训练,并对比了随机初始化与训练后的权重变化。同时提到了pybrain库,并简述了ABP训练的过程,展示其训练结果和运行时间。
摘要由CSDN通过智能技术生成

《机器学习》课后题5.5

写完了才知道有个库叫pybrain,感觉有点厉害。下次研究一下!

python代码

import numpy as np
import time


class BP:
    def __init__(self, data):
        self.data = np.array(data)
        self.input_neurons = len(self.data[0]) - 1
        self.output_neurons = len(np.unique(self.data[:, -1]))
        self.lr = 0.1
        self.rows = len(self.data)
        self.cols = len(self.data[0])

    def set_eta(self, lr):  # 设置学习率,默认为0.1
        self.lr = lr

    def get_eta(self):
        return self.lr

    def get_input_neurons(self):
        return self.input_neurons

    def get_output_neurons(self):
        return self.output_neurons

    def sigmod(self, x):
        return 1 / (1 + np.exp(-x))

    def create_data(self, q=10):
        x = self.data[:, :-1]  # 取得data的数据部分
        x = np.insert(x, [0], -1, axis=1)  # 在所有数据前插入一列-1作为哑结点
        y = np.array([self.data[:, -1], 1 - self.data[:, -1]]).transpose()
        # 类别1*l,输出神经元个数跟类别一致,所以取原来的真实输出与真实输出的相反值作为y
        d = self.input_neurons
        l = self.output_neurons
        v = np.mat(np.random.random((d + 1, q)))  # 初始化输入层到隐层的权值
        w = np.mat(np.random.random((q + 1, l)))  # 初始化隐层到输出层的权值
        return x, y, d, l, v, w

    def BP(self, err=0.01):
        time_start = time.perf_counter()
        x, y, d, l, v, w = self.create_data()
      
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值