1. 問題
在嘗試利用keras進行手寫體識別的過程中,出現了數據集導入失敗的現象,源碼和對應報錯如下:
import numpy as np
import keras
from keras.datasets import mnist
(X_train, y_train), (X_test, y_test) = mnist.load_data()
2. 解決方案
導致下載失敗的原因肯定是因爲外網限制啦,解決方式是將對應的文件下載下來,有以下兩種方式:
- 官網網址:https://s3.amazonaws.com/img-datasets/mnist.npz
- 百度網盤:鏈接https://pan.baidu.com/s/1ejVO2ePrmF93nYaXFz2wZQ ;提取碼:y6w2
下載好了放在一個位置,我這裏就放在keras裏面,使用相對路徑,在keras\datasets\mnist.py進行修改,load裏面放存儲的路徑(不用解壓)
import numpy as np
def load_data(path='mnist.npz'):
"""Loads the MNIST dataset.
# Arguments
path: path where to cache the dataset locally
(relative to ~/.keras/datasets).
# Returns
Tuple of Numpy arrays: `(x_train, y_train), (x_test, y_test)`.
"""
f = np.load(r"..\data\mnist.npz")
x_train, y_train = f['x_train'], f['y_train']
x_test, y_test = f['x_test'], f['y_test']
f.close()
return (x_train, y_train), (x_test, y_test)