問題:老板讓測試運行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
