师傅领进门之6步教你跑通一个AI程序!

 欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~

本文由云计算基础发表于云+社区专栏

源码下载地址请点击原文查看。

初学机器学习,写篇文章mark一下,希望能为将入坑者解点惑。本文介绍一些机器学习的入门知识,从安装环境到跑通机器学习入门程序MNIST demo。

内容提纲:

  1. 环境搭建
  2. 了解Tensorflow运行机制
  3. MNIST(手写数字识别 ) softmax性线回归
  4. MNIST 深度卷积神经网络(CNN)
  5. tools 工具类
  6. CPU & GPU & multi GPU
  7. 学习资料

1 环境搭建 (Windows)

  • 安装虚拟环境 Anaconda,方便python包管理和环境隔离。

Anaconda3 4.2 https://www.anaconda.com/downloads,自带python 3.5。

  • 创建tensorflow隔离环境。打开Anaconda安装后的终端Anaconda Prompt,执行下面命令
conda create -n tensorflow python=3.5 #创建名为tensorflow,python版本为3.5的虚拟环境 activate tensorflow #激活这个环境   deactivate #退出当前虚拟环境。这个不用执行

CPU 版本

pip install tensorflow #通过包管理来安装 pip install whl-file #通过下载 whl 文件安装,tensorflow-cpu安装包:http://mirrors.oa.com/tensorflow/windows/cpu/tensorflow-1.2.1-cp35-cp35m-win_amd64.whl, cp35是指python3.5

GPU 版本。我的笔记本是技持NVIDIA显卡的,可以安装cuda,GPU比CPU快很多,不过笔记本的显存不大,小模型还可以跑,大模型建议在本地用CPU跑通,到Tesla平台上训练。

img

注意点:选择正确的 CUDA 和 cuDNN 版本搭配,不要只安装最新版本,tensorflow可能不支持。

目前Tensorflow已支持到CUDA 9 & cuDNN 7,之前本人安装只支持CUDA 8 & cuDNN 6,所以用是的:

CUDA8.1 

它也包含每一张图片对应的标签,告诉我们这个是数字几。比如,上面这四张图片的标签分别是5,0,4,1。

数据集图片大小28x28,单通道灰度图。存储样式如下:

img

MNIST手写数字识别的目的是输入这样的包含手写数字的28x28的图片,预测出图片中包含的数字。

softmax线性回归认为图片中数字是N可能性由图像中每个像素点用

img

表示是 数字 i 的可能性,计算出所有数字(0-9)的可能性,也就是所有数字置信度,然后把可能性最高的数字作为预测值。

evidence的计算方式如下:

img

其中

img

代表权重,

img

代表数字 i 类的偏置量,j 代表给定图片 x 的像素索引(0~28x28=784),用于像素求和。即图片每个像素值x权重之和,再加上一个偏置b,得到可能性值。

引入softmax的目的是对可能性值做归一化normalize,让所有可能性之和为1。这样可以把这些可能性转换成概率 y

img

img

img

数据

X样本 size 28x28 = 784

img

Y样本 ,样式如

img

img

读取

from tensorflow.examples.tutorials.mnist import input_data mnist = input_data.read_data_sets(FLAGS.data_dir, one_hot=True) #total 55000,one_hot方式,图片x格式为1维数组,大小784 batch_xs, batch_ys = mnist.train.next_batch(batch_size) #分batch读取

构建图(Graph)

Inference推理,由输入 x 到输出预测值 y 的推理过程

img

img

x = tf.placeholder(tf.float32, [None, 784], name="input")
                        
关键字:
50000+
5万行代码练就真实本领
17年
创办于2008年老牌培训机构
1000+
合作企业
98%
就业率

联系我们

电话咨询

0532-85025005

扫码添加微信