《动手学深度学习》之MXNet导入下载到本地的数据库(fashion-mnist)
在学习《动手学深度学习》(Dive to Learning Deep Learning)的时候,教材示例都是通过MXNet的api来下载用于演示的数据。然而事实上是无法下载成功的,即使按照教程第一章介绍的那样来配置网络。本文的处理方法参考了论坛中一位同学的留言(https://discuss.gluon.ai/t/topic/642/32),比较简单的来解决这个问题。以下以fashion-mnist这个数据为例。
数据集下载
GitHub上数据集的地址是https://github.com/zalandoresearch/fashion-mnist/blob/master/README.md
里面有4个文件,都下载下来,放到自己要使用的文件夹(或者默认数据文件夹~/.mxnet/datasets/fashion-mnist/)。
修改SHA
在D:\Development\anaconda3\envs\mxnet-gpu150\Lib\site-packages\mxnet\gluon\data\vision\datasets.py中的FashionMNIST
中,记录着这些文件的SHA值。如果记录的SHA值和你下载的文件的SHA值不一样的话,即使文件名完全相同,也会进行下载。所以,我们要做的就是获得已下载的文件的SHA值,并将之更新到FashionMNIST
中去。
如何获取这些SHA值,另一个文件已经给我们了指示。在D:\Development\anaconda3\envs\mxnet-gpu150\Lib\site-packages\mxnet\gluon\utils.py的check_sha1
函数就是用于比较SHA值的。我们套用他来获取新下载文件的SHA值。稍作修改如下:
def check_sha1(filename, sha1_hash):
"""Check whether the sha1 hash of the file content matches the expected hash.
Parameters
----------
filename : str
Path to the file.
sha1_hash : str
Expected sha1 hash in hexadecimal digits.
Returns
-------
bool
Whether the file content matches the expected hash.
"""
sha1 = hashlib.sha1()
with open(filenam