kaggle mnist tensorflow+keras

来源:互联网 发布:网络棋牌游戏输赢原理 编辑:程序博客网 时间:2024/06/05 15:01

读取数据函数:

import csvfrom numpy import *import pandas as pddef loaddata(d):    with open(d, 'rb') as myFile:        data = []        label = []        lines=csv.reader(myFile)        for line in lines:            temp = []            for l in line:                temp.append(int(l))            label.append(temp[0])            data.append(temp[1:])    return data, labeldef lodatestdata(dir):    with open(dir, 'rb') as myf:        data = []        lines = csv.reader(myf)        for line in lines:            temp = []            for li in line:                temp.append(int(li))            data.append(temp)        return datadef loaddf(di):    train_df = pd.read_csv(di)    x_train = train_df.drop(['label'], axis=1).values.astype('float32')    y_train = train_df['label'].values    return x_train, y_train    # x_train = train_df.values.astype('float32')    # return x_train
cnn训练
from pca_test import loaddffrom keras.utils import np_utilsimport numpy as npfrom keras.models import Sequentialfrom keras.layers import Conv2D, MaxPooling2D, ZeroPadding2Dfrom keras.layers import Activation, Dropout, Flatten, Denseimport matplotlib.pyplot as pltfrom keras import backend as KK.set_image_dim_ordering('th') #input shape: (channels, height, width)x_train, y_train = loaddf('/home/hbsage/workdata/mnist/train.csv')image_hight = 28image_weight = 28n_train = x_train.shape[0]x_train = x_train.reshape(n_train, 1, image_weight, image_hight)x_train = x_train/255# plt.imshow(x_train[4,0,:,:,],cmap='gray_r')# plt.pause(10)nb_classes = np.max(y_train) + 1y_train = np_utils.to_categorical(y_train, nb_classes)input_shape = (1, image_weight, image_hight)model = Sequential()model.add(ZeroPadding2D((1, 1), input_shape=input_shape))model.add(Conv2D(32, (5, 5), activation='relu'))model.add(MaxPooling2D((2,2), strides=(2,2)))model.add(Conv2D(64, (5, 5), activation='relu', padding='same'))model.add(MaxPooling2D((2,2), strides=(2,2)))model.add(Conv2D(64, (5, 5), activation='relu', padding='same'))model.add(MaxPooling2D((2,2), strides=(2,2)))model.add(Flatten())model.add(Dense(1024))model.add(Activation('relu'))model.add(Dropout(0.5))model.add(Dense(nb_classes, activation='softmax'))model.compile(optimizer='rmsprop', loss='categorical_crossentropy', metrics=['accuracy'])batch_size = 128n_epochs = 15model.fit(x_train,          y_train,          batch_size=batch_size,          epochs=n_epochs, verbose=2,          validation_split=.1)model.save_weights('kaggle_mnist_2.h5')# model.fit(x_train, y_train,#           epochs=20,#           batch_size=32)
预测

from pca_test import loaddffrom keras.utils import np_utilsimport numpy as npfrom keras.models import Sequentialfrom keras.layers import Conv2D, MaxPooling2D, ZeroPadding2Dfrom keras.layers import Activation, Dropout, Flatten, Densefrom keras import backend as KK.set_image_dim_ordering('th') #input shape: (channels, height, width)x_train = loaddf('/home/hbsage/workdata/mnist/test.csv')image_hight = 28image_weight = 28n_train = x_train.shape[0]x_train = x_train.reshape(n_train, 1, image_weight, image_hight)x_train = x_train/255nb_classes = 10input_shape = (1, image_weight, image_hight)model = Sequential()model.add(ZeroPadding2D((1, 1), input_shape=input_shape))model.add(Conv2D(32, (5, 5), activation='relu'))model.add(MaxPooling2D((2,2), strides=(2,2)))model.add(Conv2D(64, (5, 5), activation='relu', padding='same'))model.add(MaxPooling2D((2,2), strides=(2,2)))model.add(Flatten())model.add(Dense(1024))model.add(Activation('relu'))model.add(Dropout(0.5))model.add(Dense(nb_classes, activation='softmax'))model.load_weights('kaggle_mnist_1.h5')model.compile(optimizer='rmsprop', loss='categorical_crossentropy', metrics=['accuracy'])batch_size = 128n_epochs = 15# label = model.predict(x_train)yPred = model.predict_classes(x_train, batch_size=32, verbose=1)np.savetxt('mnist_output_1.csv', np.c_[range(1, len(yPred)+1), yPred], delimiter=',', header='ImageId,Label', comments='', fmt='%d')



原创粉丝点击