BP神经网络——Python 实现

关于BP算法的原理和推导过程网上有很多博客已经写的十分清楚了,这里不再赘述,下面使用python自己实现了多隐层BP神经网络,可调节网络结构(隐层层数、节点数)。先把代码放上来,详细的等有时间再更新。

import os
import numpy as np

# Back propagation network
class BP:

    def __init__(self, precision, max_learning_time, learning_rate, hidden_nodes, sigmoid):
        """
        Parameter initialization.
        precision, max_learning_time : 计算精度ε,最大学习次数M
        learning_rate : 学习率 η (0.1~3)
        # inertance_Alpha : 惯性项系数 α(0.9~1 或者 0即不用) 
        """
        self.precision = precision
        self.max_learning_time = max_learning_time
        self.learning_rate = learning_rate

        self.hidden_nodes = hidden_nodes
        self.sigmoid = sigmoid
        print("Parameter initialization is finished... ")

    def __construct_network(self, feature_dimension, class_number):
        """
        Network structure initialization.
        hidden_nodes : 隐层节点数,自定 eg, list=[4,5,4]
        hidden_layer : 隐藏层层数,>=1 len(list)
        input_nodes : 输入层节点,等于样本特征向量的维数
        output_nodes : 输出层节点,等于分类的类别数(多输出型,1-0编码模式)
        weight_list : 每层间的权重

        :param feature_dimension: 样本特征维数
        :param class_number: 分类的类别数
        :return: 
        """
        self.input_nodes = feature_dimension
        self.output_nodes = class_number

        # 相邻两层的权系数和偏置, 范围(-0.5,0.5) , “+1” : 加上一行偏置b
        weight_ih = np.random.random_sample(size=(self.input_nodes+1, self.hidden_nodes[0])) - 0.5 # 输入层到第一隐层
        self.weight_list = [weight_ih]
        for i in range(1,len
  • 3
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值