NN入门,手把手教你用Numpy手撕NN(3) 这是一篇包含极少数学的CNN入门文章 上篇文章中简单介绍了NN的反向传播,并利用反向传播实现了一个简单的NN,在这篇文章中将介绍一下CNN. CNN CV(计算机视觉)作为AI的一大研究方向,越来越多的人选择了这个方向,其中使用的深度学习的方法基本以卷积神经网络(CNN)为基础.因此,这篇文章将介绍CNN的实现. CNN与我们之前介绍的NN的相比,出现了卷积层(Convolution层)和池化层(Pooling层).其网络架构大致如下图所示 卷积层…
前言 这是一篇包含极少数学推导的NN入门文章 大概从今年4月份起就想着学一学NN,但是无奈平时时间不多,而且空闲时间都拿去做比赛或是看动漫去了,所以一拖再拖,直到这8月份才正式开始NN的学习. 这篇文章主要参考了<深度学习入门:基于Python的理论与实现>一书,感觉这本书很不错,偏向实践,蛮适合入门. 话不多说,下面开始我们的NN入门(手撕NN)之旅 基础数学知识 这里只对张量进行简单介绍,关于矩阵运算之类的,就靠你们自己另外学啦. 标量(0D张量) 仅包含一个数字的张量叫作标量(scala…
这是一篇包含较少数学推导的NN入门文章 上篇文章中简单介绍了如何手撕一个NN,但其中仍有可以改进的地方,将在这篇文章中进行完善. 误差反向传播 之前的NN计算梯度是利用数值微分法,虽容易实现,但是计算速度慢,这里介绍的误差反向传播法能够高效计算权重参数的梯度的方法. 这里将通过计算图的方法来讲解反向传播 计算图 问题一: ​ 小明在超市买了2个100元一个的苹果,消费税是10%,请计算支付金额 ​ 问题二: ​ 小明在超市买了2个苹果.3个橘子.其中,苹果每个100元, 橘子每个150元.消费税…
MNIST手写数字识别教程 要开始带组内的小朋友了,特意出一个Pytorch教程来指导一下 [!] 这里是实战教程,默认读者已经学会了部分深度学习原理,若有不懂的地方可以先停下来查查资料 目录 MNIST手写数字识别教程 1 什么是MNIST? 2 使用Pytorch实现手写数字识别 2.1 任务目的 2.2 开发环境 2.3 实现流程 3 具体代码实现 3.1 数据预处理部分 3.1.1 初始化全局变量 3.1.2 构建数据集 3.2 训练部分 3.2.1 构建模型 3.2.2 构建迭代器与损…
苹果设备越来越普及,拿着个手机就想捣鼓点啥,于是乎就有了这个系列,会一步一步教大家学习swift编程,学会自己做一个自己的app,github地址:https://github.com/scarlettbai/2048.git. 这篇文章须要大家了解一些swift基本的语法.这里注重实践,就不讲太多基本的语法了.不懂的大家能够Google一下,swift开发环境也非常easy,直接在mac上安装一个XCode就可以,首先我们来看下终于我们要实现的效果: 当然你也能够将当中的数字换成文字给你女票安…
本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是Numpy专题的第5篇文章,我们来继续学习Numpy当中一些常用的数学和统计函数. 基本统计方法 在日常的工作当中,我们经常需要通过一系列值来了解特征的分布情况.比较常用的有均值.方差.标准差.百分位数等等.前面几个都比较好理解,简单介绍一下这个百分位数,它是指将元素从小到大排列之后,排在第x%位上的值.我们一般常用的是25%,50%和75%这三个值,通过这几个值,我们很容易对于整个特征的分布有一个大概的了解. 前面三个指标:均值…
当当当,我又开新坑了,这次的专题是Python机器学习中一个非常重要的工具包,也就是大名鼎鼎的numpy. 所以今天的文章是Numpy专题的第一篇. 俗话说得好,机器学习要想玩的溜,你可以不会写Python,但一定不能不会调库(大雾).Numpy可以说是Python中最基础也是最重要的工具库了,要用Python做机器学习,玩转各种框架,Numpy是必须要会的.像是TensorFlow.pytorch这些知名框架都是基于Numpy进行计算的,可想而知它的重要性. Numpy存在的必要性 网上关于N…
本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是numpy专题的第三篇,我们来聊聊numpy当中的索引. 上篇的末尾其实我们简单地提到了索引,但是没有过多深入.没有过多深入的原因也很简单,因为numpy当中关于索引的用法实在是很多,并不是我们想的那样用一个下标去获取数据就完事了. 所以我整理了一下相关的用法,把关于索引的使用简单分成了几类,我们一个一个来看. 切片索引 切片我们都熟悉,用冒号将两个数隔开,表示一个区间的上界和下界.通过这种方式访问这个区间内的所有元素. 这一点我…
本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是Numpy专题第6篇文章,我们一起来看看Numpy库当中剩余的部分. 数组的持久化 在我们做机器学习模型的研究或者是学习的时候,在完成了训练之后,有时候会希望能够将相应的参数保存下来.否则的话,如果是在Notebook当中,当Notebook关闭的时候,这些值就丢失了.一般的解决方案是将我们需要的值或者是数组"持久化",通常的做法是存储在磁盘上. Python当中读写文件稍稍有些麻烦,我们还需要创建文件句柄,然后一行行写…
很多人觉得配置Java开发的环境变量很麻烦,很容易忘记,时常被它搞得晕头转向.如果出现这样的情况,那么原因只有一个,你不了解为毛需要配置环境变量,不配置环境变量就不能开发了吗? 答案是:NO!,那么下面就带大家一起来分析一下原因所在. 先确定一个概念.编译一个Java源程序需要使用到javac 命令:运行启动一个Java程序需要使用到java命令.以我本机为例,这两个命令工具存在于 : D:\java\jdk\jdk1.7.0_06\bin路径下 在命令提示符下有这样一个特点,那就是只能够访问到…