keras mnist

没啥说的,直接上代码

from __future__ import print_function
 
import keras
from keras.datasets import mnist
from keras.models import Sequential
from keras.layers import Dense, Dropout
from keras.optimizers import RMSprop
from keras.utils import multi_gpu_model
from keras.layers import Input,Conv2D, MaxPooling2D,Flatten,Dense,Embedding,Lambda,AveragePooling2D
from keras.models import Model
import time

import os


import tensorflow as tf
import keras.backend.tensorflow_backend as KTF

#config = tf.ConfigProto()
#config.gpu_options.per_process_gpu_memory_fraction = 0.6 # 每个GPU控制在60%以内
#session = tf.Session(config=config)
#KTF.set_session(session )

os.environ["CUDA_VISIBLE_DEVICES"] = "0,1,2,3"

batch_size = 2000
num_classes = 10
epochs = 100
 
# the data, shuffled and split between train and test sets
(x_train, y_train), (x_test, y_test) = mnist.load_data()
 
x_train = x_train.reshape(60000, 784)
x_test = x_test.reshape(10000, 784)
x_train = x_train.astype('float32')
x_test = x_test.astype('float32')
x_train /= 255
x_test /= 255
print(x_train.shape[0], 'train samples')
print(x_test.shape[0], 'test samples')
 
 
# convert class vectors to binary class matrices
y_train = keras.utils.to_categorical(y_train, num_classes)
y_test = keras.utils.to_categorical(y_test, num_classes)
 
with tf.device('/cpu:0'):
    input_image = Input(shape=(784,))
    image_work = Dense(512, activation='relu')(input_image)
    image_work = Dropout(0.2)(image_work)
    image_work = Dense(512, activation='relu')(image_work)
    image_work = Dropout(0.2)(image_work)
    lab_out = Dense(num_classes, activation='softmax')(image_work)
    model = Model(inputs=input_image, outputs=lab_out)
 
model_p = multi_gpu_model(model,4)
model.summary()
 
ta = time.time()

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

model_p.compile(loss='categorical_crossentropy',
              optimizer=RMSprop(),
              metrics=['accuracy'])
 
 
history = model_p.fit(x_train, y_train,
                    batch_size=batch_size*4,
                    epochs=epochs,
                    verbose=1,
                    validation_data=(x_test, y_test))

tb = time.time()        
print('train time = ',tb-ta)
    
score = model.evaluate(x_test, y_test, verbose=0)
print('Test loss:', score[0])

print('Test ACC:', score[1])


model.save("Test.h5")

from keras.models import load_model

model = load_model('Test.h5')
model.summary()

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/masbbx123/article/details/84765377