人工智能-深度学习(3)TensorFlow 实战一:手写图片识别
http://gitbook.cn/gitchat/column/59f7e38160c9361563ebea95/topic/59f7e86d60c9361563ebeee5
wiki.jikexueyuan.com/project/tensorflow-zh/tutorials/mnist_beginners.html
一、简介
手写图片识别的实现,分为三步:
- 1,数据的准备
- 2,模型的设计
- 3,代码实现
我的另一篇博文-神经网络的解释
什么是神经网络
input层代表将二维数组从所有行都排列成一行,hidden层代表若干次处理,output层存储计算得到的结果,最后输出概率最大的
知乎神经网络的解释
总结一下:
神经元就是分类器,可以根据正确的值进行调整反向传播训练神经网络
1.神经网络深入浅出
!!!!!!!!!!!!!!!!!认真看两遍,保证你神清气爽。看懂了后,回来点个赞,就当你的答谢了。这个博客下的另一篇文章也写的不错
2.从机器学习谈起 推荐 不错,不过,我推的都只是适合初学者哦,大神们绕道走开
3.还有一篇关于SVM的,虽然有点跑题了,但是也觉得特别好。SVM讲解
虽然第三个链接有点跑题,但是讲真,学AI怎能不学SVM,这是我在一次双语课上做pre,查资料用到的最多的一个blog了。认真看两遍,基本可以自己跑代码了。还是不会的,欢迎私信我,一起进步。哈哈哈哈哈
开心,我以为会没人看,一晚上醒来赞变多了,也算是肯定了。学神经网络的人儿们好好努力哦,好了,大早上的,我也继续看书了。作者:知乎用户 链接:https://www.zhihu.com/question/22553761/answer/267280164
来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
二、数据的准备
Kaggle 里包含了42000份训练数据和28000份测试数据(和谷歌准备的 MNIST 数据,在数量上有所不同)。训练和测试数据的下载地址可以百度也可以点这里。下载下来是两个CVS文件。
三、模型设计
这个模型,组成是这样的:
- 使用一个最简单的单层的神经网络进行学习
- 用 SoftMax 来做为激活函数
- 用交叉熵来做损失函数
- 用梯度下降来做优化方式
神经网络:由很多个神经元组成,每个神经元接收很多个输入:[X1,X2….Xn],加权相加然后加上偏移量后,看是不是超过了某个阀值,超过了发出1,没超过发出0。
神经网络:由很多个神经元组成,每个神经元接收很多个输入:[X1,X2….Xn],加权相加然后加上偏移量后,看是不是超过了某个阀值,超过了发出1,没超过发出0。
想要成为激活函数,你得有两把刷子啊。这两把刷子是:一是你得处处可微,可微分才能求导,求极值。二是要非线性的,因为线性模型的表达能力不够。
目前主流的几个激活函数是:sigmoid,tanh,ReLU。
sigmoid:采用 S 形函数,取值范围[0,1] tanh:双切正切函数,取值范围[-1,1]
ReLU:简单而粗暴,大于0的留下,否则一律为0。
SoftMax:我们知道 max(A,B),是指 A 和 B 里哪个大就取哪个值,但我们有时候希望比较小的那个也有一定概率取到,怎么办呢?我们就按照两个值的大小,计算出概率,按照这个概率来取 A 或者 B。比如A=9,B=1,那取 A 的概率是90%,取B的概率是10%。
损失函数:损失函数是模型对数据拟合程度的反映,拟合得越好损失应该越小,拟合越差损失应该越大,然后我们根据损失函数的结果对模型进行调整。
交叉熵:这个概念要解释的简单,那就不准确,如果要准确,那可能一千字都打不住。这里说一个简单但不一定准确的解释吧。
比如,你想把乾坤大挪移练到第七层大圆满,你现在是第五层,那你还差两层,这个两层就是你和大圆满之间的距离。交叉熵通俗的讲就是现在的训练程度和圆满之间的距离,我们希望距离越小越好,所以交叉熵可以作为一个损失函数,来衡量和目标之间的距离。
梯度下降:这个概念可以这样理解,我们要解决的问题是一座山,答案在山底,我们从山顶到山底的过程就是解决问题的过程。
在山顶,想找到最快的下山的路。这个时候,我们的做法是什么呢?在每次选择道路的时候,选最陡的那条路。梯度是改变率或者斜度的另一个称呼,用数学的语言解释是导数。对于求损失函数最小值这样的问题,朝着梯度下降的方向走,就能找到最优值了。
四、代码实现
1,载入数据,并对数据进行处理
在写代码的过程中,数据的预处理是最大的一块工作,做一个项目,60%以上的代码在做数据预处理。 这个项目的预处理,分为5步:
- 把输入和结果分开
- 对输入进行处理:把一维的输入变成28*28的矩阵
- 对结果进行处理:把结果进行 One-Hot 编码
- 把训练数据划分训练集和验证集
- 对训练集进行分批
人工智能-深度学习(3)TensorFlow 实战一:手写图片识别的更多相关文章
- 【深度学习系列】PaddlePaddle之手写数字识别
上周在搜索关于深度学习分布式运行方式的资料时,无意间搜到了paddlepaddle,发现这个框架的分布式训练方案做的还挺不错的,想跟大家分享一下.不过呢,这块内容太复杂了,所以就简单的介绍一下padd ...
- 深度学习(一):Python神经网络——手写数字识别
声明:本文章为阅读书籍<Python神经网络编程>而来,代码与书中略有差异,书籍封面: 源码 若要本地运行,请更改源码中图片与数据集的位置,环境为 Python3.6x. 1 import ...
- Android+TensorFlow+CNN+MNIST 手写数字识别实现
Android+TensorFlow+CNN+MNIST 手写数字识别实现 SkySeraph 2018 Email:skyseraph00#163.com 更多精彩请直接访问SkySeraph个人站 ...
- 基于tensorflow的MNIST手写数字识别(二)--入门篇
http://www.jianshu.com/p/4195577585e6 基于tensorflow的MNIST手写字识别(一)--白话卷积神经网络模型 基于tensorflow的MNIST手写数字识 ...
- 基于TensorFlow的MNIST手写数字识别-初级
一:MNIST数据集 下载地址 MNIST是一个包含很多手写数字图片的数据集,一共4个二进制压缩文件 分别是test set images,test set labels,training se ...
- Tensorflow之MNIST手写数字识别:分类问题(1)
一.MNIST数据集读取 one hot 独热编码独热编码是一种稀疏向量,其中:一个向量设为1,其他元素均设为0.独热编码常用于表示拥有有限个可能值的字符串或标识符优点: 1.将离散特征的取值扩展 ...
- TensorFlow 卷积神经网络手写数字识别数据集介绍
欢迎大家关注我们的网站和系列教程:http://www.tensorflownews.com/,学习更多的机器学习.深度学习的知识! 手写数字识别 接下来将会以 MNIST 数据集为例,使用卷积层和池 ...
- Tensorflow实现MNIST手写数字识别
之前我们讲了神经网络的起源.单层神经网络.多层神经网络的搭建过程.搭建时要注意到的具体问题.以及解决这些问题的具体方法.本文将通过一个经典的案例:MNIST手写数字识别,以代码的形式来为大家梳理一遍神 ...
- SVM学习笔记(二)----手写数字识别
引言 上一篇博客整理了一下SVM分类算法的基本理论问题,它分类的基本思想是利用最大间隔进行分类,处理非线性问题是通过核函数将特征向量映射到高维空间,从而变成线性可分的,但是运算却是在低维空间运行的.考 ...
随机推荐
- [Angular] Write Compound Components with Angular’s ContentChild
Allow the user to control the view of the toggle component. Break the toggle component up into multi ...
- Codeforces Round #135 (Div. 2)---A. k-String
k-String time limit per test 2 seconds memory limit per test 256 megabytes input standard input outp ...
- PHP根据两点间的经纬度计算距离
/** * 说明: 根据两点间的经纬度计算距离 * @param float $lat 纬度值 * @param float $lng 经度值 */ function getDistance($lat ...
- Linux环境搭建:1. 安装VMware
我家淘宝店,主要协助同学做毕业设计:https://shop104550034.taobao.com/?spm=2013.1.1000126.d21.pPCzDZ 1. 下载VMware 能够到我的3 ...
- 微软Build2016:Xamarin杂记
去年的Build2015技术大会.留给人印象最深的莫过是Windows 10在手机端.PC端.Xbox等硬件平台上的大一统.还有非常具有科幻气质的HoloLens技术的各种展示.去年尽管也展示了Xam ...
- ubuntu hadoop伪分布式部署
环境 ubuntu hadoop2.8.1 java1.8 1.配置java1.8 2.配置ssh免密登录 3.hadoop配置 环境变量 配置hadoop环境文件hadoop-env.sh core ...
- [他山之石]Google's Project Oxygen Pumps Fresh Air Into Management
The Project Oxygen team spent one year data-mining performance appraisals, employee surveys, nominat ...
- jquery 动态绑定bind()及模拟鼠标点击A链接
近来自觉前端有小小进步,幸而记之. 1.两个 css class 紧挨在一起 则在html元素中,要同时拥有这两个class,才能起作用 .block.db{ background-image:url ...
- <input type=XXXXX>
选框,提交/重置按钮等,下面一一介绍. 1,type=text 输入类型是text,这是我们见的最多也是使用最多的,比如登陆输入用户名,注册输入电话号码,电子邮件,家庭住址等等.当然这也是Input ...
- UPDATE command denied DELETE
可用磁盘空间不足 支持SELECT information_schema. TABLES