课前知识
新版的Tensorflow2.0与原版的Tensorflow有着较大的更新和变动,Tensorflow2.0将Keras作为默认高级API,并舍弃掉其它的API。此外,另外较大的变动的是将用于机器学习的实验和研究平台 Eager execution 设置为默认优先模式, 这样设置的好处是我们不用再像以前一样预先定义静态图,任何的运算在调用之后都可以直接执行。与原版相比,Tensorflow2.0更方便,大幅降低了初学者学习的难度。
这里并不对Tensorflow2.0的其它特性做具体描述,总之我们可以比较清楚的明白,Keras是我们学习的首要基础,下文便是对Keras一些常用操作结合一些基本案例来进行描述。
Tensorflow2.0的安装
1.Tensorflow2.0的主要配置环境及使用还是在Anaconda及Jupyter notebook里,对于Anaconda的安装这里不做过多描述,有很多博客有很仔细的教程,这里主要想讲的一点的关于Tensorflow2.0安装的点,因为现在用在Anaconda Prompt 直接 pip install 指令安装实在是太慢了,经常会中断,因此我们可以用国内的一些镜像源进行安装,大家可以输入以下指令,中间多了一个网站,然后就会发现安装速度特别快了,其它库的安装也是一样的,把后面库的名字改掉即可。
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple tensorflow-gpu==2.0.0-alpha0
MNIST 数据集已经是一个被”嚼烂”了的数据集, 很多教程都会对它”下手”, 几乎成为一个 “典范”. 不过有些人可能对它还不是很了解, 下面来介绍一下.
MNIST 数据集可在 http://yann.lecun.com/exdb/mnist/ 获取, 它包含了四个部分:
Training set images: train-images-idx3-ubyte.gz (9.9 MB, 解压后 47 MB, 包含 60,000 个样本)
Training set labels: train-labels-idx1-ubyte.gz (29 KB, 解压后 60 KB, 包含 60,000 个标签)
Test set images: t10k-images-idx3-ubyte.gz (1.6 MB, 解压后 7.8 MB, 包含 10,000 个样本)
Test set labels: t10k-labels-idx1-ubyte.gz (5KB, 解压后 10 KB, 包含 10,000 个标签)
MNIST 数据集来自美国国家标准与技术研究所, National Institute of Standards and Technology (NIST). 训练集 (training set) 由来自 250 个不同人手写的数字构成, 其中 50% 是高中学生, 50% 来自人口普查局 (the Census Bureau) 的工作人员. 测试集(test set) 也是同样比例的手写数字数据.
利用TensorFlow代码下载MNIST
TensorFlow 提供了一个库,可以直接用来自动下载与安装MNIST, 见如下代码:
from tensorflow.examples.tutorials.mnist import input_data
mnist = input_data.read_data_sets("MNIST_data", one_hot=True)
其中"MNIST_data"为保存MNIST数据的文件夹名,其中还会遇到
ModuleNotFoundError: No module named 'tensorflow.examples.tutorials'
这个问题,则需要参考小编博客的处理文章:
https://blog.csdn.net/qq_43060552/article/details/103189040
MNIST 数据集中的图片
MNIST 数据集中的图片是28X 28 Pixel, 所以,每一幅图就是1 行784 ( 28X28) 列
的数据, 括号中的每一个值代表一个像素。
• 如果是黑白的图片,图片中黑色的地方数值为0 ; . 有图案的地方,数值为O r-,....; 255
之间的数字, 代表其颜色的深度。
• 如果是彩色的图片, 一个像素会由3 个值来表示RGB C 红、黄、蓝) 。
输出MNIST 里面的信息
代码:
# -*- coding: utf-8 -*-
"""
Created on Thu Nov 21 16:38:15 2019 @author: Cable-Ching"""
from tensorflow.examples.tutorials.mnist import input_data
mnist = input_data.read_data_sets("MNIST_data", one_hot=True)
print ( ' 输入数据:', mnist.train.images)
print ( ' 输入数据打shape :', mnist.train.images.shape)
import pylab
im = mnist.train.images[1]
im = im.reshape(-1 ,28)
pylab.imshow(im)
pylab.show()
结果
Extracting MNIST_data\train-images-idx3-ubyte.gz
Extracting MNIST_data\train-labels-idx1-ubyte.gz
Extracting MNIST_data\t10k-images-idx3-ubyte.gz
Extracting MNIST_data\t10k-labels-idx1-ubyte.gz
输入数据:[[0. 0. 0. ... 0. 0. 0.]
[0. 0. 0. ... 0. 0. 0.]
[0. 0. 0. ... 0. 0. 0.]
...
[0. 0. 0. ... 0. 0. 0.]
[0. 0. 0. ... 0. 0. 0.]
[0. 0. 0. ... 0. 0. 0.]]
输入数据打shape : (55000, 784)
——————想跟着博主学习python,tensorflow可以关注微信公众号 : 码奋