学习深度学习,mnist数据集是我们第一个必须要了解的数据集。
该数据集是keras自带的,直接调用即可。当我们使用keras的时候,你只需要导入keras.datasets.mnist,然后调用load_data()方法即可将数集下载下来。
安装TensorFlow
我们都清楚keras是基于TensorFlow的,所以需要先安装TensorFlow。安装TensoFlow的过程还是比较简单的,按下面步骤操作即可:
- 首先升级pip
1
python -m pip install --upgrade pip
- 然后安装TensorFlow这样我们就将 TensorFlow 安装好了。
1
pip install tensorflow
但需要注意的是,此时你安装的tensorflow很可能是CPU版本,即使你电脑上安装了Nvidia的GPU也是如此。
原因在于,Windows上必须安装CUDA Driver 和 特定版本的 CUDA Toolkit 及 cuDNN,才能装上带GPU的TensorFlow。TesnsorFlow的安装文档中对此有明确的说明,文档在这里。总之在Native Windows 上安装带GPU的TensorFlow是很麻烦的事,因此不建议使用这种方法安装TensorFlow。
当然,还有另外一种在Windows上安装GPU版TensorFlow的方法,即WSL2。在TensorFlow官网上也有相关的说明,地址在这里。
为了让你在Windows下能够安装上带GPU的TensorFlow,下面我就详细介绍一下在WSL2上安装TensorFlow的方法。
在WSL2下安装TensorFlow
首先,为你的GPU安装CUDA驱动程序,该驱动程序只要在Windows上安装一次就好了,不需要在WSL2上安装,因为WSL2也是通过这个驱动来控制GPU的。
另外,如果你的GPU比较新,CUDA驱动下载最新版本即可,新版驱动一般都前兼容两三年前的老版本,驱动的下载地址在这里。
但如果你的GPU比较旧,那就需要在Windows上安装旧版本的驱动,否则你的GPU可能会出问题。
当CUDA Driver安装好之后,你可以使用下面命令查看安装的CUDA Drivder版本:
1 | nvidia-smi |
接下来,安装WSL2,具体的安装方法可以参考这里。
我建议你直接安装WSL2默认的Ubuntu系统,这样可以降低我们的安装难度,必竟我们的重点是学习深度学习,而不是学习如何在Windows上安装最优的WSL2。
因此,只要你在PowerShell中执行下面代码就可以将WSL2安装好了:
1 | wsl --install |
注意,在执行上述操作之前,如果你的Windows系统提示你有更新,一定要先将系统更新再安装WSL2,否则会失败。
此外,当Ubuntu安装好之后,需要重启一下Windows系统。
至此,我们就将WSL2安装好了。
当然光有WSL2还不够,接下来我们需要按照TensorFlow安装文档中的说明安装CUDA Toolkit 和 cuDNN。
安装CUDA Toolkit 和cuDNN
在安装 CUDA Toolkit 和 cuDNN 之前,我们要弄清楚CUDA Driver 和 CUDA Toolkit 及 cuDNN 的关系。它们之间的关系如下:
CUDA Driver 是CUDA Toolkit 和 cuDNN 的基础,用于接收上层的指令控制GPU工作。
CUDA Toolkit 是CUDA Driver 的上层,用于封装GPU的指令,方便应用层调用。同时它还提供了一些工具,如nvcc 编译器,用于编译CUDA代码;还有调试工具,如Nsight,用于调试GPU程序。
cuDNN 是CUDA Toolkit 的上层,为神经网络提供了方便的API,如卷积层、池化层等。
CUDA Driver 和 CUDA Toolkit 及 cuDNN 的关系搞清楚后,接下来我们就看看如何安装CUDA Toolkit 和 cuDNN。
需要特别注意的是,在安装 CUDA Toolkit 和 cuDNN 时,我们需要先确认一下TensorFlow的版本以及它所需要的 CUDA Toolkit 及 cuDNN 的版本。如下表示所(官方详细对应表):
Version | Python | version Compiler | Build tools | cuDNN | CUDA |
---|---|---|---|---|---|
tensorflow-2.16.1 | 3.9-3.12 | Clang 17.0.6 | Bazel 6.5.0 | 8.9 | 12.3 |
tensorflow-2.15.0 | 3.9-3.11 | Clang 16.0.0 | Bazel 6.1.0 | 8.9 | 12.2 |
tensorflow-2.14.0 | 3.9-3.11 | Clang 16.0.0 | Bazel 6.1.0 | 8.7 | 11.8 |
… | … | … | … | … | … |
我们以表格中的第一项为例,对上述表格进行下说明。如果你要安装tensorflow 2.16.1这个版本,那你使用的python可以是3.9到3.12之间的任一版本;而安装的CUDA toolkit版本必须是12.3,cuDNN版本必须是8.9。
只有严格的按照上述配置环境才能将带GPU的TensorFlow安装成功。
CUDA toolkit各版本的下载地址在这里, cuDNN各版本的下载地址在这里。实际上,在WSL上使用apt-get安装cuDNN更方便,具体命令如下:
1 | sudo apt-get install libcudnn8 |
注意,当将CUDA toolkit和cuDNN安装好后,需要重启一下WSL,命令如下:
1 | sudo reboot |
接下来就可以安装TensorFlow了,命令如下:
1 | pip install tensorflow[and-cuda] |
至此,我们就将带GPU的TensorFlow安装好了,接下来,我们来测试一下TensorFlow是否安装成功吧。
环境测试
安装完TensorFlow之后,我们来测试一下TensorFlow是否安装成功,使用下面代码即可:
1 | import tensorflow as tf |
如果执行这段代码输出的结果是:GPU is installed,则说明安装成功。
下载mnist数据集
TensorFlow中提供了下载mnist数据集的方法,我们只需要调用load_data()方法即可。代码如下:
1 | from keras.datasets import mnist |
如何将显示mnist数据集中的图片呢?我们可以使用OpenCV库来显示图片,也可以使用matplotlib库来显示图片。
首先我们来看一下如何使用OpenCV库来显示图片的,代码如下:
1 | import cv2 |
下面是使用matplotlib库来显示图片的,代码如下:
1 | import matplotlib.pyplot as plt |
通过上面的代码,我们就可以看到mnist数据集中的图片了。
mnist数据集的存储位置
当我们调用load_data()将mnist数据集下载下来后,该数据存放在哪了呢?在不同的系统下,存放的位置是不一样的。
在Windows下,它存放在下面这个目录里:
1 | C:\Users\<username>\.keras\datasets\mnist.npz |
需要注意的是,在Windows下刚下载完mnist数据集时,并不会产生.keras
目录,一般在我们重启电脑后,才会创建该目录。
在MacOS下,它存放在下面这个目录里:
1 | /Users/<username>/.keras/datasets/mnist.npz |
同样的,在Linux下它存放在下面这个目录里:
1 | /home/<username>/.keras/datasets/mnist.npz |
有的同学可能很好奇,.npz
文件是什么文件?以前从来没见过。其实,.npz
是 一种特殊的压缩文件,用于存储多个NumPy数组。当你使用NumPy的np.savez()或np.savez_compressed()函数时,可以将多个数组保存到一个.npz文件中。这些文件内部包含了一系列的.npy二进制文件,每个.npy文件对应一个数组。.npz文件格式通过压缩这些.npy文件来减少磁盘空间的占用。
小结
本文详细介绍了TensorFlow的安装以及加载MNIST数据集的流程,希望本文对你入门tensorflow有所帮助。