zoukankan      html  css  js  c++  java
  • 机器学习——TensorFlow实战手写体识别

    from keras.datasets import mnist
    # 导入的位置在.keras/datasets/mnist/mnist.npz
    (x_train,y_train),(x_test,y_test)=mnist.load_data('mnist/mnist.npz')
    #改变数据集形状
    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
    
    
    #显示数据集分布的柱状图
    import numpy as np
    import matplotlib.pyplot as plt
    label,count=np.unique(y_train,return_counts=True)
    plt.bar(label,count,width=0.7,align='center')
    plt.xlabel('label')
    plt.ylabel('count')
    plt.xticks(label)
    for a,b in zip(label,count):
        plt.text(a,b,'%d'%b,ha='center',va='bottom')
    plt.show()
    
    
    #将数据转换成one-hot格式
    from keras.utils import np_utils
    n_class=10
    Y_train=np_utils.to_categorical(y_train,n_class)
    Y_test=np_utils.to_categorical(y_test,n_class)
    
    
    #使用 Keras sequential model 定义神经网络
    from keras.models import Sequential
    from keras.layers.core import Dense,Activation
    model=Sequential()
    #添加隐藏层
    model.add(Dense(512,input_shape=(784,)))
    model.add(Activation('relu'))
    model.add(Dense(512))
    model.add(Activation('relu'))
    model.add(Dense(10))
    model.add(Activation('softmax'))
    
    #指定损失函数和优化方案
    model.compile(loss='categorical_crossentropy',metrics=['accuracy'],optimizer='adam')
    
    #训练
    history=model.fit(x_train,
              Y_train,
              batch_size=128,
              epochs=5,
              verbose=2,
              validation_data=(x_test,Y_test)
              )
    
    #显示五次完整训练的损失变化和准确度变化
    fig=plt.figure()
    plt.subplot(2,1,1)
    plt.plot(history.history['accuracy'],label='train')
    plt.plot(history.history['val_accuracy'],label='test')
    plt.title('Mode accuracy')
    plt.ylabel('accuracy')
    plt.xlabel('epochs')
    plt.legend()
    plt.subplot(2,1,2)
    plt.plot(history.history['loss'],label='train')
    plt.plot(history.history['val_loss'],label='test')
    plt.title('Mode Loss')
    plt.legend()
    plt.show()
    
    #保存训练的model
    import os
    import tensorflow.gfile as gfile
    save_dir='./mnist/model/'
    if gfile.Exists(save_dir):
        gfile.DeleteRecursively(save_dir)
    gfile.MakeDirs(save_dir)
    model_name='my_model.h5'
    model_path=os.path.join(save_dir,model_name)
    model.save(model_path)
    print('saved at %s'%model_path)
    
    #加载训练的model
    from keras.models import load_model
    mnist_model=load_model(model_path)
    loss_and_metrics=mnist_model.evaluate(x_test,Y_test,verbose=2)
    print('loss:%f'%loss_and_metrics[0])
    print('accuracy:%f'%loss_and_metrics[1])
    
  • 相关阅读:
    nodejs内存溢出解决方法
    mongodb副本集与分片结合
    node加密
    守护进程,互斥锁,IPC,队列,生产者与消费者模型
    并发编程
    粘包问题
    socket编程
    xml模块
    网络编程
    异常处理
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13309451.html
Copyright © 2011-2022 走看看