問題:老板讓測試運行Keras官網里的Mnist-cnn.py,結果從下載數據就是一路坑……
當前環境:Ubuntu12.04、python2.7、Keras 1.1.1(不知道這個版本號對不對,在啟動文件里查到的)
按遇到問題的先后逐個出解決方案:
1、load_data數據,下載老是報Errno 104 Connection reset by peer
解決:
①因為無論是否翻牆下載都很慢,下載數據到本地並解壓出pkl文件,絕對路徑中不能有中文,
②重寫數據加載函數,后面上代碼,
2、運行代碼時報錯:
OverflowError: Range exceeds valid bounds
從異常跑出的棧里看是numpy的random函數有越界,
解決:有兩種方法,就試了種簡單的,另一種沒試,
文件前面初始化設置:
from keras import backend
backend.set_image_dim_ordering('th')
查看具體解釋。
下面是修改后的代碼:如有問題還望能評論指出,謝謝,至少現在是能跑的,
import gzip from six.moves import cPickle from keras import backend backend.set_image_dim_ordering('th') batch_size = 128 nb_classes = 10 nb_epoch = 12 # input image dimensions img_rows, img_cols = 28, 28 # number of convolutional filters to use nb_filters = 32 # size of pooling area for max pooling nb_pool = 2 # convolution kernel size nb_conv = 3 def load_data(path='mnist.pkl.gz'): # path = get_file(path, origin='https://s3.amazonaws.com/img-datasets/mnist.pkl.gz') path = r'/home/wh/mnist.pkl' if path.endswith('.gz'): f = gzip.open(path, 'rb') else: f = open(path, 'rb') f = open(path, 'rb') data = cPickle.load(f)
f.close() return data # (X_train, y_train), (X_test, y_test) # the data, shuffled and split between train and test sets #(X_train, y_train), (X_test, y_test) = mnist.load_data() (X_train, y_train), (X_test, y_test) = load_data()
時間戳:2016-12-5 20:50:13