TensorFlow的MNIST学习

转载请注明出处:http://blog.csdn.net/gamer_gyt
博主微博:http://weibo.com/234654758
Github:https://github.com/thinkgamer


MNIST是在机器学习领域中的一个经典问题。该问题解决的是把28x28像素的灰度手写数字图片识别为相应的数字,其中数字的范围从0到9.

数据集目的
data_sets.train55000 组 图片和标签, 用于训练。
data_sets.validation5000 组 图片和标签, 用于迭代验证训练的准确性。
data_sets.test10000 组 图片和标签, 用于最终测试训练的准确性。

数据集简介

MNIST数据集加载有两种办法,第一是直接从网上下载,第二是下载到本地进行load(跟第一种类似,只不过是事先下载好,从本地进行加载)。从网上下载到本地方式如下:

# 加载mnist数据集
from tensorflow.examples.tutorials.mnist import input_data
print("load finish")

mnist = input_data.read_data_sets("MNIST_data/",one_hot=True)
print(type(mnist))

输出为:

load finish
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
<class 'tensorflow.contrib.learn.python.learn.datasets.base.Datasets'>

补充
MAC OS 下载Mnist数据集出错

urllib.error.URLError: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:749)>

原因:MAC OS自带安装的OpenSSL比较老,已经无法使用。

解决办法

# Python3.6以后,在命令行执行以下命令即可。
# https://qiita.com/orangain/items/0a641d980019fd7e0c52

/Applications/Python\ 3.6/Install\ Certificates.command

# 执行该命令前
$ ls -l /Library/Frameworks/Python.framework/Versions/3.6/etc/openssl/

# 执行该命令后
ls -l /Library/Frameworks/Python.framework/Versions/3.6/etc/openssl/
lrwxr-xr-x  1 cyan  admin  52  2 23 11:27 cert.pem -> ../../lib/python3.6/site-packages/certifi/cacert.pem

print("MNIST 训练集数据条数:" ,mnist.train.num_examples)
print("MNIST 测试集数据条数:" ,mnist.test.num_examples)

train_img = mnist.train.images
train_label = mnist.train.labels
print("训练集类型:",type(train_img))
print("训练集维度:",train_img.shape)

test_img = mnist.test.images
test_label = mnist.test.labels
print("测试集类型:",type(test_img))
print("测试集维度:",test_img.shape)

输出为:

MNIST 训练集数据条数: 55000
MNIST 测试集数据条数: 10000
训练集类型: <class 'numpy.ndarray'>
训练集维度: (55000, 784)
测试集类型: <class 'numpy.ndarray'>
测试集维度: (10000, 784)

打开当前运行代码的目录,我们会发现一个MNIST_data的文件夹,里边包含的文件如下:

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

使用next_batch函数加载指定条数的数据集

# 关于next_batch函数
batchSize = 100
batch_x,batch_y = mnist.train.next_batch(batch_size=batchSize)
print(batch_x.shape)
print(batch_y.shape)

输出为:

(100, 784)
(100, 10)

【技术服务】,详情点击查看: https://mp.weixin.qq.com/s/PtX9ukKRBmazAWARprGIAg

扫一扫 关注微信公众号!号主 专注于搜索和推荐系统,尝试使用算法去更好的服务于用户,包括但不局限于机器学习,深度学习,强化学习,自然语言理解,知识图谱,还不定时分享技术,资料,思考等文章!


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值