Keras學習:試用卷積-訓練CIFAR-10數據集


import numpy as np
import cPickle
import keras as ks
from keras.layers import Dense, Activation, Flatten, convolutional, Convolution2D, MaxPooling2D, Dropout
from keras.utils import np_utils
import logging


def read_data(file):
    with open(file,'rb') as fo:
        dict = cPickle.load(fo)
        return np.array(dict['data']).reshape(10000,32,32,3),np.array(dict['labels']).reshape(10000,1)


def to4d(img):
    return img.reshape(img.shape[0],3,32,32).astype(np.float32)/255


def fit(model,batch_num,val_img,val_LBL):
    (train_img, train_lbl) = read_data('cifar-10/data_batch_'+str(batch_num))
    train_img=to4d(train_img)
    train_LBL=np_utils.to_categorical(train_lbl,nb_classes=10)
    model.fit(x=train_img,y=train_LBL,batch_size=100,nb_epoch=10,verbose=1,validation_data=(val_img,val_LBL))


val_img,val_lbl = read_data('cifar-10/test_batch')
val_img = to4d(val_img)
val_LBL = np_utils.to_categorical(val_lbl,nb_classes=10)

model = ks.models.Sequential()
model.add(Convolution2D(32, 3, 3, border_mode='same', input_shape=(3,32,32),dim_ordering='th'))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))
model.add(Convolution2D(64, 3, 3, border_mode='same'))
model.add(Activation('relu'))
model.add(Convolution2D(64, 3, 3))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))
model.add(Flatten())
model.add(Dense(64))
model.add(Activation('relu'))
model.add(Dropout(0.25))
model.add(Dense(10))
model.add(Activation('softmax'))

logging.getLogger().setLevel(logging.DEBUG)

model.compile(loss='categorical_crossentropy',optimizer='adadelta',metrics=['accuracy'])

for batch_num in range(1,6):
    fit(model,batch_num,val_img,val_LBL)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM