文章目录

  • 人工智能简历史
    • 机器学习与深度学习
    • TensorFlow框架介绍
    • Mnist手写数字获取
  • MNIST深度学习入门
    • 神经网络语法
    • MNIST结构介绍
    • 加载训练集图片
  • MNIST识别案例
    • TensorFlow图像识别
    • 图像识别效果演示

人工智能简历史

机器学习与深度学习

是一门多领域交叉学科,涉及概率论、统计学、算法复杂度理论等多门学科。专门研究计算机怎样模拟或实现人类的学习行为。以获得新的知识或者技能

  1. 人工智能:流水线机器其实就是人工智能。
  2. 机器学习:垃圾邮箱机器学习,需要自动过滤算法、今日头条数据推荐
  3. 深度学习:2010 至今,机器学习包含深度学习 (可以理解为高级的机器学习),例如 图形图像识别、自然语言处理

TensorFlow框架介绍

2016年3月份,Google的围棋人工智能程序AlphaGo以4比1的大比分,战胜人类选手李世石,在全球成功引起广泛关注,引起了一波人工智能的热潮。从智能手机的语音助手,到相机的人脸识别,人工智能技术已经进入到我们生活的方方面面,在未来将深刻的影响我们的生活。

为了加速深度学习领域的发展,2015年11月9日,Google发布深度学习框架TensorFlow并宣布开源。在短短的一年时间内,在GitHub上,TensorFlow就成为了最流行的深度学习项目。

TensorFlow在图形分类、音频处理、推荐系统和自然语言处理等场景下都有丰富的应用。虽然Tenforflow开源时间刚满一年,但是它正在以迅猛的速度渗入到我们的寻常生活中。

Mnist手写数字获取

MNIST是在机器学习领域中的一个经典问题。该问题解决的是把28x28像素的灰度手写数字图片识别为相应的数字,其中数字的范围从0到9, Yann LeCun’s MNIST page提供了训练集与测试集数据的下载

文件 内容
train-images-idx3-ubyte.gz 训练集图片 - 55000 张 训练图片, 5000 张 验证图片
train-labels-idx1-ubyte.gz 训练集图片对应的数字标签
t10k-images-idx3-ubyte.gz 测试集图片 - 10000 张 图片
t10k-labels-idx1-ubyte.gz 测试集图片对应的数字标签

MNIST深度学习入门

神经网络语法

  1. 输入向量的维度和输入神经元的个数相同
  2. 每个连接都有权重
  3. 同一层神经元之间没有连接
  4. 神经元由:输入、隐藏、输出层组成

MNIST结构介绍

正如前面提到的一样,每一个MNIST数据单元有两部分组成:一张包含手写数字的图片和一个对应的标签。我们把这些图片设为“xs”,把这些标签设为“ys”。训练数据集和测试数据集都包含xs和ys,比如训练数据集的图片是 mnist.train.images ,训练数据集的标签是 mnist.train.labels。

我们把这个数组展开成一个向量,长度是 28x28 = 784。如何展开这个数组(数字间的顺序)不重要,只要保持各个图片采用相同的方式展开。从这个角度来看,MNIST数据集的图片就是在784维向量空间里面的点, 并且拥有比较复杂的结构 (提醒: 此类数据的可视化是计算密集型的)。
展平图片的数字数组会丢失图片的二维结构信息。这显然是不理想的,最优秀的计算机视觉方法会挖掘并利用这些结构信息,我们会在后续教程中介绍。但是在这个教程中我们忽略这些结构,所介绍的简单数学模型,softmax回归(softmax regression),不会利用这些结构信息。

因此,在MNIST训练数据集中,mnist.train.images 是一个形状为 [60000, 784] 的张量,第一个维度数字用来索引图片,第二个维度数字用来索引每张图片中的像素点。在此张量里的每一个元素,都表示某张图片里的某个像素的强度值,值介于0和1之间。

加载训练集图片

from tensorflow.examples.tutorials.mnist import input_data
import tensorflow as tf# 这些图片并不是传统意义上的png或者jpg格式的图片,因为png或者jpg的图片格式,片会被处理成很简易的二维数组
mnist = input_data.read_data_sets("./input_data/",one_hot=True)
# 获取训练集     images.shape (55000, 784)   28*28=784,每行都是一张图片特征值
print(mnist.train.images)
# 打印第一张图,784个特征值的矩阵
print(mnist.train.images[0])
# 获取目标值矩阵  labels.shape (55000, 10)  10个权重
print(mnist.train.labels)
# 获取指定的n张图的特征值与目标值
print(mnist.train.next_batch(10))

MNIST识别案例

TensorFlow图像识别

import tensorflow as tf
from tensorflow.examples.tutorials.mnist.input_data import read_data_setsmnist = read_data_sets("../data/input_data", one_hot=True)X = tf.placeholder(tf.float32, [None, 784],name="X")
y = tf.placeholder(tf.float32, [None, 10],name="y_true")# 建立模型,初始化权重与偏置
weight =tf.Variable(tf.random.normal(shape=[784,10]),name="w")
# 如果设置为常量,则在训练模型时候bias不会改变
# bias = tf.constant(value=0.0,shape=[10],name="bias")
# 输出有10个连接点,因此需要设置10个偏置
bias = tf.Variable(tf.random.normal(shape=[10]),name="bias")
# 预测值None个样本输出的结果 [None,784] ==> [784,10] ==> [None,10] + [10]
y_predict = tf.matmul(X,weight) + bias
# 打印结果发现此公式可以取代上面的softmax + 交叉熵的计算
loss = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(labels=y, logits=y_predict))
# 设置梯度下降的步长,一般0,1之间,步长越小则需要更多额训练次数,但是错过最小值机率也小
gdo = tf.train.GradientDescentOptimizer(0.5)  # 0.05  0.1   0.5
train_op = gdo.minimize(loss)
print('求解模型的正确率')
arg1 = tf.argmax(y_predict,axis=1)
arg2 = tf.argmax(y,axis=1)
accuracy = tf.reduce_mean(tf.cast(tf.equal(arg1,arg2),tf.float16))with tf.Session() as sess:sess.run(tf.global_variables_initializer())for i in range(2000):mnist_x,mnist_y = mnist.train.next_batch(55)d = {X:mnist_x,y:mnist_y}# 每个样本返回1个预测值sess.run(train_op,feed_dict=d)print(f'训练第{i}次的正确率为{sess.run(accuracy,feed_dict=d)}')else:import matplotlib.pyplot as pltplt.rcParams['font.sans-serif'] = ['SimHei']guess = sess.run(y_predict, feed_dict=d)# 把特征值,目标值,预测值封装到了一个list中images_and_labels_and_guess = list(zip(mnist_x, mnist_y, guess))# figsize:指定总图片的宽和高,单位为英寸, dpi缺省为80plt.figure(figsize=(20, 18), dpi=200)# enumerate() 函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,# index作为第一个参数,后面的值作为第二个参数,如果参数中有多个元组,会自动封装成一个元组for index, (image, label, preidct) in enumerate(images_and_labels_and_guess):# 每个Axes(ax)对象都是一个拥有自己坐标系统的绘图区域plt.subplot(5, 11, index + 1)# MNIST图片是一个784维的向量,我们重新把它还原为28x28维的图像image = image.reshape(28, 28)#  plt.cm.gray_r  代表逆转的意思plt.imshow(image, cmap=plt.cm.gray_r)if index == 1:print(label, preidct)val_t, val_p = tf.argmax(label).eval(), tf.argmax(preidct).eval()if val_t != val_p:color = "#ff0000"else:color = "#000000"plt.title(f'真:{val_t},预:{val_p}', fontsize=20, color=color)plt.savefig("mnist.png")plt.show()

图像识别效果演示

10分钟搞定图形图像识别相关推荐

  1. 三步10分钟搞定数据库版本的降迁 (将后台数据库SQL2008R2降为SQL2005版本)

    三步10分钟搞定数据库版本的降迁 (将SQL2008R2降为SQL2005版本) 转载原文,并注明出处!虽无多少技术含量,毕竟是作者心血原创,希望理解. 转自 http://blog.csdn.net ...

  2. mysql降低数据库版本_三步10分钟搞定数据库版本的降迁 (将后台数据库SQL2008R2降为SQ...

    三步10分钟搞定数据库版本的降迁 (将SQL2008R2降为SQL2005版本) 前思后想仍觉得实战数据库版本的降迁一文中的方式不仅老土而且低效,故有了下文三步搞定数据库从MSSQL2008R2 高版 ...

  3. 视频教程-10分钟搞定 php+H5手机网页微信支付 在线视频教程(含源代码)-微信开发

    10分钟搞定 php+H5手机网页微信支付 在线视频教程(含源代码) 04年进入计算机行业.拥有6年net和php项目开发经验,8年java项目开发经验. 现前端全栈工程师,主攻产品设计,微信开发等. ...

  4. 10分钟搞定miniconda-python环境安装

    windows配置python环境 每次到一个新电脑就要安装环境,很多包安装起来很麻烦,下面对安装地址和常规使用包做了总结,一键安装所有包不用再一个一个找了!所有问题10分钟搞定! 1. 安装Mini ...

  5. 风控必备的评分卡模型,TempoAI 10分钟搞定

    8月20日,央行发布了<2020年第二季度支付体系运行总体情况>,数据显示,截至第二季度末,信用卡逾期半年未偿信贷总额838.84亿元,占信用卡应偿信贷余额的1.17%.与一季度相比,信用 ...

  6. 10分钟搞定win11安卓子系统

    10分钟搞定win11安卓子系统 Android子系统的要求 一.安装 Windows 虚拟化支持 二.Win11 正式版安装安卓子系统方法教程 (离线包安装) 三.在Win11 安卓子系统安装 AP ...

  7. 内部流出: 66个经典数据分析神技汇总,10分钟搞定一天工作!

    不会吧,都2022年了, 还有人在网盘.B站里学"Excel的用法和表格模板"? 宝~ 那忒麻烦了,还不靠谱 今个,分享你一 华为内部流出的  Excel学习资源! 1.用Vloo ...

  8. w ndows 10画图,网友“羞辱”Windows 10界面设计:用画图 10分钟搞定!

    原标题:网友"羞辱"Windows 10界面设计:用画图 10分钟搞定! Windows 10是个好系统,但是UI界面设计一直有不小的争议.微软试图全面扁平化,但很多时候仿佛只是为 ...

  9. 计算机专业试讲10分钟教案,10分钟搞定一份满意的试讲教案!(适用所有学科)...

    原标题:10分钟搞定一份满意的试讲教案!(适用所有学科) 虽然临近教资面试,但很多小伙伴还是对写教案不是很熟悉,觉得没有思路,总之好多小伙伴都在为面试写教案的事情发愁呀! 现就来教大家在10分钟的时间 ...

  10. PPT做的又慢又难看,收下这4个模板资源站,10分钟搞定高逼格PPT

    办公急需一些材料的时候,行业规则指引着我们去问百度呀,班之后工作上遇到一些问题,换着一颗请教的心去问别的老员工,换来的只有一句:你不会上百度查吗? 工作中我们常常需要一些实用资源,工作汇报还有各种报告 ...

最新文章

  1. [转载]商业智能的三个层次
  2. PC厂商如何演化移动互联网市场格局?
  3. 创建了联合索引还用在单个字段上创建索引吗_数据库 索引并不是万能的
  4. 【资源共享】休眠唤醒 开发指南
  5. 《博士五年总结》及我其它过去的博客文章
  6. CentOS 6.3下Samba服务器的安装与配置(转)
  7. Vue Google浏览器插件 Vue Devtools无法使用的解决办法
  8. 项目管理工程师:第二章信息系统服务管理
  9. cmd查看所有数据库 db2_民生银行数据库自动化部署的探索与实践
  10. 聊聊传说中的散列哈希Hash算法,以及Java中的HashTable,HashMap,HashSet,ConcurrentHashMap......
  11. c语言中代码中的作用,C语言中#的神奇作用
  12. 品优购-01分布式框架-Dubbox
  13. 如何学习32位单片机
  14. J1939标准概述【小白入门】
  15. 野人岛华娱java下载_华娱又携惊喜—《野人岛4—四季神器》评测!
  16. html设置字体样式罗马,罗马字体英文
  17. HttpClient4.x 文件上传
  18. 闵帆老师论文写作课程心得体会-怎么写好一篇论文
  19. 如何让自己的网站快速被百度收录(方法一)
  20. win10下安装matlab r2018a破解版

热门文章

  1. 利用js,HTML,css实现一个简单的指针时钟
  2. 【Java每日面试题】大厂是如何设计秒杀系统的,渣本Java开发小伙如何一步步成为架构师
  3. RL之MAB:多臂老虎机Multi-Arm Bandit的简介、应用、经典案例之详细攻略
  4. Linux重要命令-locat
  5. 用CSS3画出一个正方体
  6. 26 | Superscalar和VLIW:如何让CPU的吞吐率超过1
  7. MySQL分库分表dble初次尝试
  8. 《白话大数据与机器学习》读书笔记1
  9. matlab演示波粒二象性,MATLAB实验电子波动性的Matlab仿真
  10. 数据结构 WSADATA