当前位置:首页 > 人工智能电子书 > 神经网络电子书网盘下载
卷积神经网络的Python实现 卷积神经网络的Python实现
码小辫

码小辫 提供上传

资源
18
粉丝
26
喜欢
503
评论
16

    卷积神经网络的Python实现 PDF 全书高清版

    神经网络电子书
    • 发布时间:

    给大家带来的一篇关于神经网络相关的电子书资源,介绍了关于神经网络、Python方面的内容,本书是由人民邮电出版社出版,格式为PDF,资源大小113.8 MB,单建华编写,目前豆瓣、亚马逊、当当、京东等电子书综合评分为:9.2,更多相关的学习资源可以参阅 人工智能电子书Python电子书Python视频程序设计电子书、等栏目。

  • 卷积神经网络的Python实现 PDF 下载
  • 下载地址:https://pan.baidu.com/s/1ACF7kTdt_jSUNz1oECUwM
  • 提取码:7hu4
  • 卷积神经网络的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

    上一篇:Python编程无师自通  下一篇:推荐系统与深度学习

    展开 +

    收起 -

     
    神经网络 相关电子书
    关于神经网络的学习笔记
    网友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、当输出和误差是由多个节点共同作用的结果时,会按照权重占比分配误差。因为权重较大的连接对所造成的误差贡献更大。

    电子书 编程教程 文档 软件 源码 视频

    Copyright 2018-2020 xz577.com 码农之家

    本站所有电子书资源不再提供下载地址,只分享来路

    免责声明:网站所有作品均由会员网上搜集共同更新,仅供读者预览及学习交流使用,下载后请24小时内删除

    版权投诉 / 书籍推广 / 赞助:QQ:520161757