当前位置: 首页 > news >正文

制作网站软件app公司网站建立

制作网站软件app,公司网站建立,网站搭建论文,html静态网站开发实验报告python实现神经网络模型算法 今天#xff0c;厾罗和大家分享用Python实现神经网络模型算法#xff0c;仅用于技术学习交流。 实现技巧 1.导入依赖库 主要是安装相关的依赖库。本文实现的环境为#xff1a;python 3.7。 from __future__ import division import math …  python实现神经网络模型算法 今天厾罗和大家分享用Python实现神经网络模型算法仅用于技术学习交流。 实现技巧 1.导入依赖库 主要是安装相关的依赖库。本文实现的环境为python 3.7。 from __future__ import division import math import random import pandas as pd 2.构建BP神经网络类 主要是构建三层反向传播神经网络类。 三层反向传播神经网络 class NN:def __init__(self, ni, nh, no):self.ni ni 1 # 输入层节点self.nh nh 1 # 隐藏层节点self.no no # 输出层种类self.ai [1.0] * self.ni self.ah [1.0] * self.nh self.ao [1.0] * self.no self.wi self.makeMatrix(self.ni, self.nh) # 输出层到隐藏层的映射矩阵self.wo self.makeMatrix(self.nh, self.no) # 隐藏层到输出层的映射矩阵for i in range(self.ni): for j in range(self.nh): self.wi[i][j] self.rand(-0.2, 0.2) for j in range(self.nh):for k in range(self.no):self.wo[j][k] self.rand(-2, 2) #前向传播激活神经网络的所有节点def update(self, inputs):if len(inputs) ! self.ni - 1:print(len(inputs),self.ni - 1)raise ValueError(与输入层节点数不符) for i in range(self.ni - 1): self.ai[i] inputs[i] for j in range(self.nh): # self.nh表示隐藏层的节点数sum 0.0 # 激活项a g(z) z Θ^T x ;sum相当于z每次循环归零for i in range(self.ni): #通过循环z Θ^T x 因为Θ、x均为向量sum sum self.ai[i] * self.wi[i][j] #〖 Z〗^((2))Θ^((1)) a^((1))self.ah[j] self.sigmoid(sum) # a^((2))g(z^((2)))这里使用sigmoid()函数作为激活函数for k in range(self.no):sum 0.0for j in range(self.nh):sum sum self.ah[j] * self.wo[j][k] #〖 Z〗^((3))Θ^((2)) a^((2))self.ao[k] self.sigmoid(sum) # a^((3))g(z^((3)))return self.ao[:]#反向传播,计算节点激活项的误差def backPropagate(self, targets, lr): # targets为某样本实际种类分类lr为梯度下降算法的学习率output_deltas [0.0] * self.nofor k in range(self.no):error targets[k] - np.round_(self.ao[k])output_deltas[k] self.dsigmoid(self.ao[k]) * error# 计算隐藏层的误差hidden_deltas [0.0] * self.nh for j in range(self.nh):error 0.0for k in range(self.no):error error output_deltas[k] * self.wo[j][k] hidden_deltas[j] self.dsigmoid(self.ah[j]) * error# 更新输出层权重for j in range(self.nh): # 反向传播算法求出每个节点的误差后反向更新权重for k in range(self.no):change output_deltas[k] * self.ah[j] self.wo[j][k] self.wo[j][k] lr * change # 更新输入层权重for i in range(self.ni): for j in range(self.nh):change hidden_deltas[j] * self.ai[i]self.wi[i][j] self.wi[i][j] lr * change# 计算误差error 0.0for k in range(self.no): error 0.5 * (targets[k] - np.round_(self.ao[k])) ** 2 return error #用测试集输出准确率def test(self, patterns): count 0num0for p in patterns:target p[1]result self.update(p[0]) print(p[0], :, target, -, np.round_(result))num0for k in range(self.no):if (target[k] np.round_(result[k])):num 1print(num)if num3:count 1print(******************,(target) (np.round_(result)),******************)accuracy int(float(count / len(patterns))*100)print(accuracy: %-.9f % accuracy,%) #输出训练过后神经网络的权重矩阵def weights(self):print(输入层权重:)for i in range(self.ni):print(self.wi[i])print()print(输出层权重:)for j in range(self.nh):print(self.wo[j])#用训练集训练神经网络def train(self, patterns, iterations1000, lr0.1): for i in range(iterations):error 0.0 for p in patterns: inputs p[0] targets p[1] self.update(inputs) error error self.backPropagate(targets, lr) if i % 100 0:print(percent,int(i/iterations*100),%, error: %-.9f % error)#生成区间[a, b)内的随机数def rand(self, a, b): return (b - a) * random.random() a # 生成大小 I*J 的矩阵默认零矩阵def makeMatrix(self, I, J, fill0.0): m [] for i in range(I): m.append([fill] * J) return m # 函数 sigmoidbp神经网络前向传播的激活函数def sigmoid(self, x):return 1.0 / (1.0 math.exp(-x)) # 函数 sigmoid 的导数反向传播时使用def dsigmoid(self, x):return x * (1 - x) 3.读取数据并进行预处理 主要是读取构建分类模型的数据并进行预处理。 data [] raw pd.read_csv(iris.csv) raw_data raw.values raw_feature raw_data[1:, 1:5] for i in range(len(raw_feature)): ele [] ele.append(list(raw_feature[i])) if raw_data[i][5] 0: ele.append([0, 0,1]) elif raw_data[i][5] 1:ele.append([0,1, 0])elif raw_data[i][5] 2:ele.append([1, 1,1])else:ele.append([0, 0,0])data.append(ele) 4.利用构建的BP神经网络预测类创建神经网络模型 主要是用BP神经网络预测类创建神经网络类模型。 nn NN(4, 10, 3) 5.BP分类模型训练及预测 主要是划分训练集和测试集并进行BP分类模型训练和预测。 training data[1:100] test data[101:] nn.train(training, iterations1000) nn.test(test) 完整源代码 from __future__ import division import math import random import pandas as pd import numpy as np 三层反向传播神经网络 class NN:def __init__(self, ni, nh, no):self.ni ni 1 # 输入层节点self.nh nh 1 # 隐藏层节点self.no no # 输出层种类self.ai [1.0] * self.ni self.ah [1.0] * self.nh self.ao [1.0] * self.no self.wi self.makeMatrix(self.ni, self.nh) # 输出层到隐藏层的映射矩阵self.wo self.makeMatrix(self.nh, self.no) # 隐藏层到输出层的映射矩阵for i in range(self.ni): for j in range(self.nh): self.wi[i][j] self.rand(-0.2, 0.2) for j in range(self.nh):for k in range(self.no):self.wo[j][k] self.rand(-2, 2) #前向传播激活神经网络的所有节点def update(self, inputs):if len(inputs) ! self.ni - 1:print(len(inputs),self.ni - 1)raise ValueError(与输入层节点数不符) for i in range(self.ni - 1): self.ai[i] inputs[i] for j in range(self.nh): # self.nh表示隐藏层的节点数sum 0.0 # 激活项a g(z) z Θ^T x ;sum相当于z每次循环归零for i in range(self.ni): #通过循环z Θ^T x 因为Θ、x均为向量sum sum self.ai[i] * self.wi[i][j] #〖 Z〗^((2))Θ^((1)) a^((1))self.ah[j] self.sigmoid(sum) # a^((2))g(z^((2)))这里使用sigmoid()函数作为激活函数for k in range(self.no):sum 0.0for j in range(self.nh):sum sum self.ah[j] * self.wo[j][k] #〖 Z〗^((3))Θ^((2)) a^((2))self.ao[k] self.sigmoid(sum) # a^((3))g(z^((3)))return self.ao[:]#反向传播,计算节点激活项的误差def backPropagate(self, targets, lr): # targets为某样本实际种类分类lr为梯度下降算法的学习率output_deltas [0.0] * self.nofor k in range(self.no):error targets[k] - np.round_(self.ao[k])output_deltas[k] self.dsigmoid(self.ao[k]) * error# 计算隐藏层的误差hidden_deltas [0.0] * self.nh for j in range(self.nh):error 0.0for k in range(self.no):error error output_deltas[k] * self.wo[j][k] hidden_deltas[j] self.dsigmoid(self.ah[j]) * error# 更新输出层权重for j in range(self.nh): # 反向传播算法求出每个节点的误差后反向更新权重for k in range(self.no):change output_deltas[k] * self.ah[j] self.wo[j][k] self.wo[j][k] lr * change # 更新输入层权重for i in range(self.ni): for j in range(self.nh):change hidden_deltas[j] * self.ai[i]self.wi[i][j] self.wi[i][j] lr * change# 计算误差error 0.0for k in range(self.no): error 0.5 * (targets[k] - np.round_(self.ao[k])) ** 2 return error #用测试集输出准确率def test(self, patterns): count 0num0for p in patterns:target p[1]result self.update(p[0]) print(p[0], :, target, -, np.round_(result))num0for k in range(self.no):if (target[k] np.round_(result[k])):num 1print(num)if num3:count 1print(******************,(target) (np.round_(result)),******************)accuracy int(float(count / len(patterns))*100)print(accuracy: %-.9f % accuracy,%) #输出训练过后神经网络的权重矩阵def weights(self):print(输入层权重:)for i in range(self.ni):print(self.wi[i])print()print(输出层权重:)for j in range(self.nh):print(self.wo[j])#用训练集训练神经网络def train(self, patterns, iterations1000, lr0.1): for i in range(iterations):error 0.0 for p in patterns: inputs p[0] targets p[1] self.update(inputs) error error self.backPropagate(targets, lr) if i % 100 0:print(percent,int(i/iterations*100),%, error: %-.9f % error)#生成区间[a, b)内的随机数def rand(self, a, b): return (b - a) * random.random() a # 生成大小 I*J 的矩阵默认零矩阵def makeMatrix(self, I, J, fill0.0): m [] for i in range(I): m.append([fill] * J) return m # 函数 sigmoidbp神经网络前向传播的激活函数def sigmoid(self, x):return 1.0 / (1.0 math.exp(-x)) # 函数 sigmoid 的导数反向传播时使用def dsigmoid(self, x):return x * (1 - x)if __name__ __main__:data [] raw pd.read_csv(iris.csv) raw_data raw.values raw_feature raw_data[1:, 1:5] for i in range(len(raw_feature)): ele [] ele.append(list(raw_feature[i])) if raw_data[i][5] 0: ele.append([0, 0,1]) elif raw_data[i][5] 1:ele.append([0,1, 0])elif raw_data[i][5] 2:ele.append([1, 1,1])else:ele.append([0, 0,0])data.append(ele)nn NN(4, 10, 3) training data[1:100] test data[101:] nn.train(training, iterations1000) nn.test(test)
http://www.pierceye.com/news/73717/

相关文章:

  • 上海英文网站建设公司基于cms设计网站的背景意义
  • 永久免费企业网站建设开网店需要自己做网站吗
  • 网站开发人员属于网站建设 微信 app
  • html5开发的网站东莞松山湖东华医院
  • 中远建设集团有限公司网站智慧团建系统平台登录入口
  • 交互网站 百度企业网站的主要类型有
  • 汉南做网站wordpress 图片的设置密码
  • 衡水高端网站建设苏州专业网站制作方案
  • 飞沐网站建设公司北京网站自己怎么制作
  • 做外贸怎么看外国网站广告资源发布平台
  • 东莞seo建站投放南宁设计公司排行
  • 做网站哪些比较好wordpress建站需要多久
  • 包头网站优化深圳租房
  • 什么官网比较容易做网站wordpress数据查询
  • 做外贸网站的经验公司网站年费
  • p2p网站建设公司哪家好全国知名网站排名
  • 上海弄网站的wordpress发不出验证邮件
  • 专业建站是什么深圳设计之都
  • 山东省住房城乡建设厅网站目前市面上做网站的程序
  • 俞润装饰做哪几个网站杭州企业网站设计好公司
  • 国外域名网站推荐网站做排名2015新年
  • 苏州新公司网站建设沈阳模板建站系统
  • 商用图片的网站网站开发常用图标 图像
  • 汕头网站设计浩森宇特wordpress汉化教程视频
  • 网站规划与设计期末大作业怎么做wordpress 英文
  • 网站网格布局网页制作步骤流程
  • 开网站建设wordpress iis建站
  • 网站开发课程设计参考文献沈阳男科医院哪家好哪个医院正规
  • 上海网站建设网站游戏做网站至少要花多少钱
  • 如何做属于自己的领券网站WordPress多域名无法登录