神经网络简易的框架
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了神经网络简易的框架,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含4223字,纯文字阅读大概需要7分钟。
内容图文
![神经网络简易的框架](/upload/InfoBanner/zyjiaocheng/1312/dae3ee1a1d43490da591bb95324de3fd.jpg)
最近学习了神经网络的原理,以下是学习的成果,分享出来
1 import numpy 2 # scipy.special for the sigmoid function expit() 3 import scipy.special #专用扩展函数 4#libray for plotting arrays 5import matplotlib.pyplot #用于绘制数组的libray 6#ensure the plots are inside this notebook,not anexternal windows #在页面内呈现 7 %matplotlib inline 8 9 10#神经网络框架类 11class neuralNetwork: 12#初始化神经网络 输入 隐藏层 输出 学习率 13def__init__(self,inputnodes,hiddennondes,outputnodes,learningrate): 14 self.inodes=inputnodes 15 self.hondes=hiddennondes 16 self.onodes=outputnodes 17 18#链接权值矩阵 link weight matrices ,wih and who 19#weights inside the arrays are w_i_j,where link is from node in to node j in the next layer 20#数组内的权重是w_i_j,其中link是从节点in到下一层的节点j 21#self.wih=(numpy.random.rand(self.hondes,self.inodes)-0.5) 22#self.who=(numpy.random.rand(self.onodes,self.hondes)-0.5) 23 24#初始化权重 25 self.wih = numpy.random.normal(0.0,pow(self.hondes,-0.5),(self.hondes,self.inodes)) 26 self.who = numpy.random.normal(0.0,pow(self.onodes,-0.5),(self.onodes,self.hondes)) 27 28#学习率初始 29 self.lr=learningrate 30 31#激活函数是s型函数 32 self.activation_function = lambda x: scipy.special.expit(x) 33 34pass 35 36#训练神经网络 train the neural network 37def train(self,inputs_list,targets_list): 38#将输入列表转换为二维数组 39 inputs =numpy.array(inputs_list,ndmin=2).T 40 targets = numpy.array(targets_list,ndmin=2).T 41 42#计算信号进入隐含层 43 hidden_inputs = numpy.dot(self.wih,inputs) 44#计算从隐含层出现的信号 45 hidden_outputs = self.activation_function(hidden_inputs) 46 47#计算信号进入输出层 48 final_inputs = numpy.dot(self.who,hidden_outputs) 49#计算从输出层出现的信号 50 final_outputs =self.activation_function(final_inputs) 51 52#误差计算 53 output_errors = targets-final_outputs 54#隐含层误差馈 55 hidden_errors =numpy.dot(self.who.T,output_errors) 56 57#隐含层权重更新 58 self.who += self.lr*numpy.dot((output_errors*final_outputs*(1.0-final_outputs)),numpy.transpose(hidden_outputs)) 59 60#输入层权重更新 61 self.wih += self.lr*numpy.dot((hidden_errors*hidden_outputs*(1.0-hidden_outputs)),numpy.transpose(inputs)) 62 63 64 65pass 66#查询 67def query(self,inputs_list): 68#将输入列表转换为二维数组 69 inputs = numpy.array(inputs_list,ndmin=2).T 70 71#计算信号到隐藏层 72 hidden_inputs = numpy.dot(self.wih,inputs) 73#计算从隐含层出现的信号 74 hidden_outputs =self.activation_function(hidden_inputs) 75 76#计算信号到最终的输出层 77 final_inputs = numpy.dot(self.who,hidden_outputs) 78#计算从最终输出层出现的信号 79 final_outputs = self.activation_function(final_inputs) 80 81return final_outputs 82 83#数字输入,隐藏层、输出层 84 input_nodes= 784 85 hidden_nodes=500 86 output_nodes=10 87 88 89#学习率设置 learning rate 90 learning_rate = 0.1 91 92 93#创建神经网络实例 94 n=neuralNetwork(input_nodes,hidden_nodes,output_nodes,learning_rate) 95 96 97#打开训练集 98 training_data_file = open("mnist_dataset/mnist_train.csv","r") 99 training_data_list = training_data_file.readlines() 100training_data_file.close() 101102103#训练神经网络104105106#网络执行情况的记分卡最初为空107#scorecard =[]108109110#检查训练数据集中的所有记录111def traIning(): 112for record in training_data_list: 113 all_values = record.split(‘,‘)#用,分割为数组114 inputs = (numpy.asfarray(all_values[1:])/255.0*0.99)+0.01 #整体偏移到0.01到0.99之间 规模和转移输入115 targets =numpy.zeros(output_nodes)+0.01 #创建目标输出值 在0.01-0.99之间116 targets[int(all_values[0])] =0.99 #是该记录的目标标签117 n.train(inputs,targets) 118pass119120121#epochs是训练数据集用于训练的次数122 epochs = 5 123for e in range(epochs): 124 traIning() 125126127print("训练完成!") 128129130131132 test_data_file = open("mnist_dataset/mnist_test.csv",‘r‘)#打开测试文件133 test_data_list =test_data_file.readlines() #读取数据134 test_data_file.close()#完毕文件135136137#网络执行情况的记分卡最初为空138 scorecard =[] 139for record in test_data_list: 140 all_values =record.split(‘,‘) 141 correct_label = int(all_values[0]) #训练集中的数字142 inputs =(numpy.asfarray(all_values[1:])/25.0*0.99)+0.01 #权重#整体偏移到0.01到0.99之间143 outputs =n.query(inputs)#进行查询144 label = numpy.argmax(outputs) #数字 标签145#print(label,"network‘s answer")146if (label == correct_label): # 147 scorecard.append(1) 148else: 149 scorecard.append(0) 150pass151 all_value =test_data_list[5].split(‘,‘) #查看对应的数字152print(all_value[0]) 153154155 scorecard_array = numpy.asarray(scorecard) 156print("performance=",scorecard_array.sum()/scorecard_array.size) #计算准确率
原文:https://www.cnblogs.com/uge3/p/13305290.html
内容总结
以上是互联网集市为您收集整理的神经网络简易的框架全部内容,希望文章能够帮你解决神经网络简易的框架所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。