探索Tensorflow2中神经网络算法——基于Mnist数据集(一)

本文阅读预计用时:10分钟

主要阐述如何基于Mnist数据集在Tensorflow2中搭建神经网络


这个专栏主要对64位mac上的Tensorflow2.2的使用进行探索。在本专栏的第一篇文章中,笔者列举了几个对于Tensorflow使用者而言比较清晰的学习网站,有兴趣的学习者可以去自行探索。不同角度学习Tensorflow的途径还有很多,笔者在此就不一一详述。


  • 引语

如果我们想要用Tensorflow2去构造神经网络分析Mnist数据集中的数据,那么我们需要做到以下几个步骤:准备数据集、建立和评估模型。笔者会分两个部分对阐述如何用Tensorflow2去构造神经网络,即数据集和模型。这一篇文章中主要对在mac系统下准备数据集时遇到的难点进行扫雷,进而为构造模型打下基础。

  • 深入

1. 1 准备数据集

首先,在准备数据集之前,我们需要导入下述模块:

import tensorflow as tf
from tensorflow import keras
import numpy as np
import matplotlib.pyplot as plt

这里面的keras是一个由Python编写的开源人工神经网络库,可以作为Tensorflow等高阶应用程序接口,进而可以进行深度学习模型的设计、调试、评估、应用和可视化。

Mnist手写数字集作为一个神经网络的例子已经被包含在keras中,所以我们可以直接使用keras模块对其进行导入。

#读取数据集
mnist = keras.datasets.mnist
(train_images, train_labels), (test_images, test_labels) = mnist.load_data()

* 如果使用的是国内网络代理,那么会由于代理问题,最终导致从外网下载数据集时出现timeout报错。

所以,我们选择直接下载Mnist数据集,再放入本地的keras.datasets文件夹中。

Mnist下载网址如下:

Mnist数据集​storage.googleapis.com/tensorflow/tf-keras-datasets/mnist.npz

由于在mac系统中,keras文件夹被隐藏了,比较难找。所以我们进入Finder,输入 �������+�ℎ���+� 去跟踪文件夹的路径,在其中输入~/.keras。

进入keras文件夹之后,如果其中没有datasets文件夹,那么我们需要在里面创建一个名为datasets的文件夹,然后将之前下载好的.npz的Mnist数据集放入其中。到此,我们准备数据集的工作便已完成就绪。

此时,我们可以使用之前的代码对数据集的准备进行验证,确认无误之后,进入下一步。

mnist = keras.datasets.mnist
(train_images, train_labels), (test_images, test_labels) = mnist.load_data()

1. 2 特征处理 (Feature Processing)

在准备好了数据集后,我们需要对搭建神经网络的数据进行处理。特征处理是机器学习的一大重点之一,特征处理是通过对原始数据的处理和加工,将原始数据属性通过处理转换为数据特征的过程。某种程度而言,好的数据以及特征往往是一个性能优秀模型的基础。

我们知道在Mnist数据集中,train set已经被标记好了1-9中的数字,那么我们可以把train set中的每张图片分类进 1-9定义的class中。这样,每个图像都会映射到一个标签,由于类名不包含在数据集中,因此class会将它们存储在此处,以便在绘制图像时使用:

#定义数据集图片的class
class_names = ['0', '1', '2', '3', '4','5', '6', '7', '8', '9']

接下来,我们需要先归一化每个图像,然后才能将其传递到神经网络中。将像素值从 ,[0,255] 标准化为 ,[−1,1] ,以使神经网络更易于训练。

#调整图片pixel
train_images = train_images / 255.0
test_images = test_images / 255.0

至此,我们已经对数据进行了初步的分类和处理,将Mnist数据集中的test set和train set的数据都进行了预处理,为生成一个高性能的神经网络打下了基础。

最后,我们可以通过matplotlib查看我们为搭建神经网络准备完毕的部分数据。

#展示训练集中的数据
plt.figure(figsize=(10,10))
for i in range(10):
    plt.subplot(5,5,i+1)
    plt.xticks([])
    plt.yticks([])
    plt.grid(False)
    plt.imshow(train_images[i], cmap=plt.cm.binary)
    plt.xlabel(class_names[train_labels[i]])
plt.show()

  • 结语

这篇文章主要讲解了基于Mnist数据集在Tensorflow2中搭建神经网络的基础步骤,也阐述了如何在mac系统下准备数据集和用Tensorflow2对数据进行处理。在下一篇文章中,笔者会主要讲解如何通过处理好的数据搭建神经网络,进而完成在Tensorflow2中复现神经网络算法。

PS:鄙人不才,欢迎各位大佬指正!如果觉得本篇本章对您有所帮助,欢迎关注、评论、赞!

参考网址:

Basic classification: Classify images of clothing | TensorFlow Core

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

手把手教你学AI

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值