当前位置:首页 > 人工智能 >
《卷积神经网络的Python实现》电子书封面

卷积神经网络的Python实现

  • 发布时间:2019年12月12日 08:35:30
  • 作者:单建华
  • 大小:113.8 MB
  • 类别:卷积神经网络电子书
  • 格式:PDF
  • 版本:超清版
  • 评分:9.5

    卷积神经网络的Python实现 PDF 超清版

      给大家带来的一篇关于卷积神经网络相关的电子书资源,介绍了关于神经网络、Python方面的内容,本书是由人民邮电出版社出版,格式为PDF,资源大小113.8 MB,单建华编写,目前豆瓣、亚马逊、当当、京东等电子书综合评分为:8.3分

      Tags:python 神经网络 

      内容介绍

      卷积神经网络的Python实现

      卷积神经网络的Python实现 电子书封面

      内容节选

      1、大学阶段学好数学很重要在《python神经网络编程》一书中,里面核心的算法思维方式就是线性代数和微积分,尤其是线性代数矩阵的乘法,是神经网络计算的核心内容,幸好大学时这块基础很好,所里整本书看起来不费力气。
      2、尝试一步一步实现所有功能在《python神经网络编程》一书中,作者手把手教你如何用python实现神经网络的过程,并用图片识别来叫我们进行训练和应用,从而较好的掌握其中的应用场景。建议读者应该逐步实现相关功能,并了解去原理,适当进行代码的优化和展示。由于不同的应用环境、编程环境,实际上展示回有一些区别,需要自己反复琢磨和百度查询。没有没有python经验,直接入手有可能比较麻烦,建议可以找一本python书籍看看,我看的是刘瑜老师的《Python编程从零基础到项目实战》,该书深入浅出的介绍了python基础语法,并就实际各种应用场景进行了基础的普及和尝试,是初学者的福音。
      3、优化并提出自己的想法在数字识别过程中,《python神经网络编程》一书只提供了单一的代码执行方法,这样没有办法系统的进行数据测试和数据分析,我就尝试用多重循环的方式进行改进,从而达到任意隐藏节点层数、任意世代次数,任意学习效率的组合测试和输出,并加入每一次的运行时间,输出每一次的运行结果,从而试图寻找其中的规律,找到最优值。并对每次运行结果进行记录,以便以后学习和分析。
      4、分享自己的代码以下是完整的实现代码,欢迎大家留言,讨论,共同学习,共同进步,后续继续分享自己的心得。现在最大的问题就是笔记本计算机计算不过来了,需要更大、更好的运行环境,也希望如果有人测试完成了能够分享出来。

      import numpy
      # scipy.special for the sigmoid function expit
      import scipy.special
      # neural network class definition
      import matplotlib.pyplot
      import time
      import datetime
      # 2018年12月16日对《python神经网络编程》一书代码进行优化,并进行测试,lucoaixi
      class neuralNetwork:
      #initialise the neural network
          def __init__(self,inputnodes,hiddennodes,outputnodes,learningrate):
      #set number if nodes in each input,hidden,output layer
              self.inodes = inputnodes
      self.hnodes = hiddennodes
      self.onodes = outputnodes
      # link weight matrices,wih and who
      # weight insides the arrays are w_i_j,where link is fron node i to node j in the next layer
      # w11 w21
      #w12 w22 etc
              self.wih = numpy.random.normal(0.0,pow(self.hnodes,-0.5),(self.hnodes,self.inodes))
      self.who = numpy.random.normal(0.0,pow(self.onodes,-0.5),(self.onodes,self.hnodes))
      # learning rate
              self.lr = learningrate
      #activation funtion is the sigmoid function
              self.activation_function  =lambda x:scipy.special.expit(x)
      pass
          #train the neural network
          def train(self,inputs_list,targets_list):
      # convet inputs list to 2d array
              inputs = numpy.array(inputs_list,ndmin=2).T
      targets = numpy.array(targets_list,ndmin=2).T
      #calculate signals into hidden layer
              hidden_inputs = numpy.dot(self.wih,inputs)
      #calculate the signals emerging from hidden layer
              hidden_outputs =self.activation_function(hidden_inputs)
      #calculate signals into final output layer
              final_inputs = numpy.dot(self.who,hidden_outputs)
      #calculate the signals emerging from final output layer
              final_outputs =self.activation_function(final_inputs)
      # putput layer error is the (target-actual)
              output_errors = targets - final_outputs
      #output layer error is the output_errors,split by weights,recombined at hidden nodes
              hidden_errors = numpy.dot(self.who.T,output_errors)
      #update the weights for the links between the hidden and output layers
              self.who +=self.lr * numpy.dot((output_errors*final_outputs*(1.0-final_outputs)),numpy.transpose(hidden_outputs))
      #update the weights for the links between the input and hidden layers
              self.wih +=self.lr * numpy.dot((hidden_errors*hidden_outputs*(1.0-hidden_outputs)),numpy.transpose(inputs))
      pass
          #query the neural network
          def query(self,inputs_list):
      #convet inputs list to 2d array
              inputs = numpy.array(inputs_list,ndmin=2).T
      #calculate signals into hidden layer
              hidden_inputs = numpy.dot(self.wih,inputs)
      #calculate the signals emerging from hidden layer
              hidden_outputs =self.activation_function(hidden_inputs)
      #calculate signals into final output layer
              final_inputs = numpy.dot(self.who,hidden_outputs)
      #calculate the signals emerging from final output layer
              final_outputs =self.activation_function(final_inputs)
      return final_outputs
      #begin process 进程开始
      #初始化训练数据和测试数据
      #load the mnist training data CSV file into a list
      training_data_file =open("C:/test/mnist_train.csv",'r')
      training_data_list = training_data_file.readlines()
      training_data_file.close()
      #load the mnist test data CSV file into a list
      #test_data_file = open("C:/test/mnist_train_100.csv",'r')
      test_data_file =open("C:/test/mnist_test.csv",'r')
      test_data_list = test_data_file.readlines()
      test_data_file.close()
      #初始化 输入点数、隐藏层节点数、输出节点数
      #number of input,hidden and output nodes
      input_nodes =784
      hidden_nodes1= ['10','20','40','80','100','200','300','400','500','600','700','800','900','1000']
      #hidden_nodes2= ['10','20','40','80','100','120','150','200']
      hidden_nodes2= ['200','300','400','500','600','700','800','900','1000' ]#测试200-1000个隐藏节点
      hidden_nodes =100
      output_nodes =10
      # 初始化学习率 is 0.3
      #learning_rate = ['0.1','0.2','0.3','0.4', '0.5', '0.6','0.7','0.8','0.9']
      learning_rate = ['0.1','0.2','0.3']#测试学习率0.1、0.2、0.3
      #dataSet = dataSet.astype('float64')
      #初始化世代次数
      epochs =10
      #程序开始
      start = time.time()
      print('begin:',time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()))
      print('世代次数cs,','学习率lr,','隐藏层节点数hn,','执行时长tm,',"执行结果out")
      for iin range(len(hidden_nodes2)):
      for ein range(epochs):
      for lrin range(len(learning_rate)):
      start = time.time()
      n = neuralNetwork(input_nodes,int(hidden_nodes2[i]), output_nodes,float(learning_rate[lr]))
      # go through all records in the training data set
                  for recordin training_data_list:
      # split the record by the ',' connas
                      all_values = record.split(',')
      # scale and shift the inputs
                      inputs = (numpy.asfarray(all_values[1:]) /255.0 *0.99) +0.01
                      # create the target output values(all 0.01,except the desired label which is 0.99)
                      targets = numpy.zeros(output_nodes) +0.01
                      # all_values[0] is the target lable for this record
                      targets[int(all_values[0])] =0.99
                      n.train(inputs, targets)
      pass
      pass
                  # 测试这个神经网络
      # 计分卡记录网络运行情况,初始值为空
                  scorecard = []
      # 在测试数据集中计算所有的记录值
                  for recordin test_data_list:
      all_values = record.split(',')
      correct_lable =int(all_values[0])
      # print(correct_lable,'correct_lable')
                      inputs = (numpy.asfarray(all_values[1:]) /255.0 *0.99) +0.01
                      outputs = n.query(inputs)
      lable = numpy.argmax(outputs)
      # print(lable,"networks's answer")
                      if (lable == correct_lable):
      scorecard.append(1)
      else:
      scorecard.append(0)
      pass
      pass
                  end = time.time()
      seconds = end - start
      # print(scorecard)
                  scorecard_array = numpy.asarray(scorecard)
      print('cs=',e+1,',lr=',learning_rate[lr],',hn=',hidden_nodes2[i],',tm=',int(seconds),",out=",
      scorecard_array.sum() / scorecard_array.size)
      pass
      #结束
      end = time.time()
      seconds = end - start
      print(seconds)
      print('end:',time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()))
      

      内容介绍

      卷积神经网络是深度学习重要的模型之一。本书是卷积神经网络领域的入门读物,假定读者不具备任何机器学习知识。书中尽可能少地使用数学知识,从机器学习的概念讲起,以卷积神经网络的zui新发展结束。 本书首先简单介绍了机器学习的基本概念,详细讲解了线性模型、神经网络和卷积神经网络模型,然后介绍了基于梯度下降法的优化方法和梯度反向传播算法,接着介绍了训练网络前的准备工作、神经网络实战、卷积神经网络的应用及其发展。针对每个关键知识点,书中给出了基于NumPy 的代码实现,以及完整的神经网络和卷积神经网络代码实现,方便读者训练网络和查阅代码。 本书既可以作为卷积神经网络的教材,也可以供对卷积神经网络感兴趣的工程技术人员和科研人员参考。

      目录

      • 第 一部分 模型篇
      • 第 1章 机器学习简介 2
      • 1.1 引言 2
      • 1.2 基本术语 3
      • 1.3 重要概念 5
      • 1.4 图像分类 12
      • 1.5 MNIST数据集简介 15
      • 第 2章 线性分类器 17
      • 2.1 线性模型 17
      • 2.1.1 线性分类器 18
      • 2.1.2 理解线性分类器 19
      • 2.1.3 代码实现 21
      • 2.2 softmax损失函数 22
      • 2.2.1 损失函数的定义 23
      • 2.2.2 概率解释 24
      • 2.2.3 代码实现 25
      • 2.3 优化 26
      • 2.4 梯度下降法 26
      • 2.4.1 梯度的解析意义 27
      • 2.4.2 梯度的几何意义 29
      • 2.4.3 梯度的物理意义 29
      • 2.4.4 梯度下降法代码实现 29
      • 2.5 牛顿法 30
      • 2.6 机器学习模型统一结构 31
      • 2.7 正则化 33
      • 2.7.1 范数正则化 34
      • 2.7.2 提前终止训练 37
      • 2.7.3 概率的进一步解释 38
      • 第3章 神经网络 39
      • 3.1 数学模型 39
      • 3.2 激活函数 41
      • 3.3 代码实现 44
      • 3.4 学习容量和正则化 45
      • 3.5 生物神经科学基础 48
      • 第4章 卷积神经网络的结构 50
      • 4.1 概述 50
      • 4.1.1 局部连接 51
      • 4.1.2 参数共享 52
      • 4.1.3 3D特征图 52
      • 4.2 卷积层 53
      • 4.2.1 卷积运算及代码实现 54
      • 4.2.2 卷积层及代码初级实现 57
      • 4.2.3 卷积层参数总结 63
      • 4.2.4 用连接的观点看卷积层 64
      • 4.2.5 使用矩阵乘法实现卷积层运算 67
      • 4.2.6 批量数据的卷积层矩阵乘法的代码实现 69
      • 4.3 池化层 74
      • 4.3.1 概述 74
      • 4.3.2 池化层代码实现 76
      • 4.4 全连接层 79
      • 4.4.1 全连接层转化成卷积层 80
      • 4.4.2 全连接层代码实现 82
      • 4.5 卷积网络的结构 83
      • 4.5.1 层的组合模式 83
      • 4.5.2 表示学习 86
      • 4.6 卷积网络的神经科学基础 87
      • 第二部分 优化篇
      • 第5章 基于梯度下降法的最优化方法 90
      • 5.1 随机梯度下降法SGD 91
      • 5.2 基本动量法 93
      • 5.3 Nesterov动量法 95
      • 5.4 AdaGrad 95
      • 5.5 RMSProp 97
      • 5.6 Adam 98
      • 5.7 AmsGrad 99
      • 5.8 学习率退火 99
      • 5.9 参数初始化 100
      • 5.10 超参数调优 101
      • 第6章 梯度反向传播算法 104
      • 6.1 基本函数的梯度 104
      • 6.2 链式法则 105
      • 6.3 深度网络的误差反向传播算法 107
      • 6.4 矩阵化 109
      • 6.5 softmax损失函数梯度计算 111
      • 6.6 全连接层梯度反向传播 112
      • 6.7 激活层梯度反向传播 113
      • 6.8 卷积层梯度反向传播 115
      • 6.9 最大值池化层梯度反向传播 118
      • 第三部分 实战篇
      • 第7章 训练前的准备 124
      • 7.1 中心化和规范化 124
      • 7.1.1 利用线性模型推导中心化 125
      • 7.1.2 利用属性同等重要性推导规范化 126
      • 7.1.3 中心化和规范化的几何意义 128
      • 7.2 PCA和白化 128
      • 7.2.1 从去除线性相关性推导PCA 129
      • 7.2.2 PCA代码 130
      • 7.2.3 PCA降维 131
      • 7.2.4 PCA的几何意义 133
      • 7.2.5 白化 134
      • 7.3 卷积网络在进行图像分类时如何预处理 135
      • 7.4 BN 136
      • 7.4.1 BN前向计算 136
      • 7.4.2 BN层的位置 137
      • 7.4.3 BN层的理论解释 138
      • 7.4.4 BN层在实践中的注意事项 139
      • 7.4.5 BN层的梯度反向传播 140
      • 7.4.6 BN层的地位探讨 141
      • 7.4.7 将BN层应用于卷积网络 141
      • 7.5 数据扩增 142
      • 7.6 梯度检查 144
      • 7.7 初始损失值检查 146
      • 7.8 过拟合微小数据子集 146
      • 7.9 监测学习过程 147
      • 7.9.1 损失值 147
      • 7.9.2 训练集和验证集的准确率 148
      • 7.9.3 参数更新比例 149
      • 第8章 神经网络实例 150
      • 8.1 生成数据 150
      • 8.2 数据预处理 152
      • 8.3 网络模型 153
      • 8.4 梯度检查 156
      • 8.5 参数优化 158
      • 8.6 训练网络 159
      • 8.7 过拟合小数据集 162
      • 8.8 超参数随机搜索 162
      • 8.9 评估模型 165
      • 8.10 程序组织结构 165
      • 8.11 增加BN层 167
      • 8.12 程序使用建议 171
      • 第9章 卷积神经网络实例 172
      • 9.1 程序结构设计 173
      • 9.2 激活函数 173
      • 9.3 正则化 174
      • 9.4 优化方法 175
      • 9.5 卷积网络的基本模块 176
      • 9.6 训练方法 181
      • 9.7 VGG网络结构 186
      • 9.8 MNIST数据集 197
      • 9.9 梯度检测 199
      • 9.10 MNIST数据集的训练结果 202
      • 9.11 程序使用建议 205
      • 第 10章 卷积网络结构的发展 206
      • 10.1 全局平均池化层 206
      • 10.2 去掉池化层 208
      • 10.3 网络向更深更宽发展面临的困难 209
      • 10.4 ResNet向更深发展的代表网络 210
      • 10.5 GoogLeNet向更宽发展的代表网络 213
      • 10.6 轻量网络 215
      • 10.6.1 1×1深度维度卷积代码实现 217
      • 10.6.2 3×3逐特征图的卷积代码实现 219
      • 10.6.3 逆残差模块的代码实现 222
      • 10.7 注意机制网络SENet 223

      以上就是本次介绍的卷积神经网络电子书的全部相关内容,希望我们整理的资源能够帮助到大家,感谢大家对码农之家的支持。

      上一篇:大型网站性能优化实战

      下一篇:精通OpenStack

      展开 +

      收起 -

      下载地址:百度网盘下载
      卷积神经网络 相关电子书
      Python网络编程
      Python网络编程 PDF 第3版

      Python网络编程(第3版) 针对想要深入理解使用Python来解决网络相关问题或是构建网络应用程序的技术人员,结合实例讲解了网络协议、网络数据及错误、电子邮件、服务器架构和HTTP及Web应用程序

      立即下载
      Python网络爬虫从入门到实践
      Python网络爬虫从入门到实践 PDF 超清版

      这本书讲解了如何使用Python编写网络爬虫程序获取互联网上的大数据,包含基础部分、进阶部分和项目实践三个部分,能带领读者从入门到进阶,再到实战,一步步了解爬虫,终写出自己的爬虫程序,欢迎下载

      立即下载
      Python网络编程基础
      Python网络编程基础 PDF 完整超清版 立即下载
      Python网络数据采集
      Python网络数据采集 PDF 影印完整版 立即下载
      Python网络爬虫实战
      Python网络爬虫实战 PDF 高清版

      本书从Python的安装开始,详细讲解了Python从简单程序延伸到Python网络爬虫的全过程。本书从实战出发,根据不同的需求选取不同的爬虫,有针对性地讲解了几种Python网络爬虫。本书共8章,涵盖

      立即下载
      实战Python网络爬虫
      实战Python网络爬虫 PDF 配套源码版

      实战Python网络爬虫 配套源码 从爬虫工具开发设计到动手做开发设计网络爬虫架构 从基本原理到实践活动,从入门到精通,受欢迎网络爬虫关键技术全把握 包含丰富多彩的爬虫工具、库、架构

      立即下载
      用Python写网络爬虫
      用Python写网络爬虫 PDF 扫描完整版

      做为这种方便快捷地搜集在网上信息内容并从这当中提取出能用信息内容的方法,网络爬虫技术性变得更加有效。应用Python那样的简易计算机语言,你能应用小量程序编写专业技能就能够抓取

      立即下载
      读者心得
      32小时22分钟前回答

      tensorflow实现简单的卷积神经网络

      本文实例为大家分享了Android九宫格图片展示的具体代码,供大家参考,具体内容如下 一.知识点总结 1.卷积神经网络出现的初衷是降低对图像的预处理,避免建立复杂的特征工程。因为卷积神经网络在训练的过程中,自己会提取特征。 2.灵感来自于猫的视觉皮层研究,每一个视觉神经元只会处理一小块区域的视觉图像,即感知野。放到卷积神经网络里就是每一个隐含节点只与设定范围内的像素点相连(设定范围就是卷积核的尺寸),而全连接层是每个像素点与每个隐含节点相连。这种感知野也称之为局部感知。 例如,一张1000*1000的图片,如果隐含层有100*100个隐含节点全连接,则需要1000*1000*100*100+1……

      26小时44分钟前回答

      人工神经网络算法知识点总结

      人工神经网络的许多算法已在智能信息处理系统中获得广泛采用,尤为突出是是以下4种算法:ART网络、LVQ网络、Kohonen网络Hopfield网络,下面就具体介绍一下这这四种算法: 1.自适应谐振理论(ART)网络 自适应谐振理论(ART)网络具有不同的方案。一个ART-1网络含有两层一个输入层和一个输出层。这两层完全互连,该连接沿着正向(自底向上)和反馈(自顶向下)两个方向进行。 当ART-1网络在工作时,其训练是连续进行的,且包括下列算法步骤: (1)对于所有输出神经元,如果一个输出神经元的全部警戒权值均置为1,则称为独立神经元,因为它不被指定表示任何模式类型。 (2)给出一个新的输入模……

      网友NO.22752
      网友NO.22752

      RowNumber:行号,这个肯定没用,删除 CustomerID:用户编号,这个是顺序发放的,删除 Surname:用户姓名,对流失没有影响,删除 CreditScore:信用分数,这个很重要,保留 Geography:用户所在国家/地区,这个有影响,保留 Gender:用户性别,可能有影响,保留 Age:年龄,影响很大,年轻人更容易切换银行,保留 Tenure:当了本银行多少年用户,很重要,保留 Balance:存贷款情况,很重要,保留 NumOfProducts:使用产品数量,很重要,保留 HasCrCard:是否有本行信用卡,很重要,保留 IsActiveMember:是否活跃用户,很重要,保留 EstimatedSalary:估计收入,很重要,保留 Exited:是否已流失,这将作为我们的标签数据

      网友NO.47474
      网友NO.47474

      神经网络如何工作 1、当不能精确知道一些事情如何运作时,我们可以尝试使用模型来估计其运作方式,在这个模型中,包含了我们可以调整的参数。而改进模型的方法是:基于模型输出和已知真实实例之间的比较,得到模型便宜的误差从而调整参数。 2、学习率的使用,让我们“小心翼翼”地向训练样本所指示方向移动;当训练数据本身不能确信为完全正确并且包含在现实世界测量中普遍出现的错误和噪声时,有节制的调整可以抑制这些错误或噪声的影响。 3、如果数据本身不是由单一线性过程支配,那么一个简单的线性分类器不能对数据进行划分(XOR)。此时多个线性分类器的作用体现出来。 4、连接神经元之间的权重,可以强化或弱化神经元之间传递的信号。随着神经网络学习过程的进行,神经网络通过调整优化网络内部的连接权重改进输出;一些权重的值可能会变为0或趋近于0,这以为着这些连接对网络的贡献为0。 5、当输出和误差是由多个节点共同作用的结果时,会按照权重占比分配误差。因为权重较大的连接对所造成的误差贡献更大。

      码农之家

      金明轩 提供上传

      资源
      24
      粉丝
      32
      喜欢
      503
      评论
      1

      Copyright 2018-2021 www.xz577.com 码农之家

      版权投诉 / 书籍推广:520161757@qq.com