博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python 实现 机器学习(周志华) 参考答案 第五章 神经网络 5.7 RBF 神经网络
阅读量:4211 次
发布时间:2019-05-26

本文共 1642 字,大约阅读时间需要 5 分钟。

#-*- coding:utf-8 -*-import reimport xlrdimport xdrlib,sysimport xlwtimport datetimeimport  timeimport numpy as npdef rand(a, b): #返回a 行 n 列 (0,1)的随机数矩阵    A=np.zeros((a,b))    from random import random    for h in range(a):        for l in range(b):            A[h][l]=random()    return Aif __name__=="__main__":    #异或的数据    data=np.array([[0,0],[0,1],[1,0],[1,1]])    y=np.array([0,1,1,0])    t=10 #隐藏神经元的数目,大于输入层数目    p=rand(4,t)       #径向基函数的值    ty=rand(4,1)      #输出值    w=rand(1,t)  #隐藏层第i个神经元与输出神经元的权重    b=rand(1,t)  #样本与第i个神经元中心的距离的缩放系数    tk=0.5    # [id, c] = kmeans(x, 2);    c = rand(t, 2) # 隐层第i个神经元的中心    kn=0  #迭代次数    sn=0  #累积误差值累积次数    old_ey=0  #前一次迭代的累积误差    print((np.array(data[0]) - np.array(c[0])).T)    while 1:        kn=kn+1        #计算每个样本的径向基函数的值        for i in range(4):            for j in range(t):                ij=(data[i]-c[j])                ij=ij.dot(ij.T) #矩阵相乘                p[i][j]=np.exp(-1*b[0][j]*ij)            ty[i]=w.dot(p[i].T)        print(p)        #计算累积误差        ey=(ty.T-y).dot((ty.T-y).T)        ey=ey[0][0]        print('ey:',ey)        #g更新w,b        dw=np.zeros((1,t))        db=np.zeros((1,t))        for i in range(4):            for j in range(t):                dw[0][j]=dw[0][j]+(ty[i]-y[i])*p[i][j]                ij = (data[i] - c[j])                ij = ij.dot(ij.T)  # 矩阵相乘                db[0][j]=db[0][j]-(ty[i]-y[i])*w[0][j]*ij*p[i][j]        print("dw:", dw)        w=w-tk*dw/4        b=b-tk*db/4        #迭代终止条件        if(abs(old_ey-ey)<0.0001):            sn=sn+1            if(sn==10):                break        else:            old_ey=ey            sn=0

github地址:

转载地址:http://megli.baihongyu.com/

你可能感兴趣的文章
MapReduce Task数目划分
查看>>
ZooKeeper分布式锁
查看>>
3126 Prime Path
查看>>
app自动化测试---ADBInterface驱动安装失败问题:
查看>>
RobotFramework+Eclipse安装步骤
查看>>
测试的分类
查看>>
photoshop cc2019快捷键
查看>>
pycharm2019版本去掉下划线的方法
查看>>
SQL中EXISTS的用法
查看>>
10丨案例:在JMeter中如何设置参数化数据?
查看>>
11丨性能脚本:用案例和图示帮你理解HTTP协议
查看>>
12丨性能场景:做参数化之前,我们需要考虑什么?
查看>>
13丨性能测试场景:如何进行场景设计
查看>>
14丨性能测试场景:如何理解业务模型
查看>>
Prometheus exporter详解
查看>>
15丨性能测试场景:如何进行监控设计
查看>>
16丨案例:性能监控工具之Grafana-Prometheus-Exporters
查看>>
九度OJ 1085:求root(N, k) (迭代)
查看>>
九度OJ 1086:最小花费 (DP)
查看>>
九度OJ 1087:约数的个数 (数字特性)
查看>>