zoukankan      html  css  js  c++  java
  • 莫凡Python 3

    莫凡Python 3

     

     

    CNN 卷积神经网络

    参考资料

    数据预处理

    • X_train = X_train.reshape(-1, 1, 28 , 28)
      这种处理我不是很理解

    建立模型

    代码

    # -*- coding: utf-8 -*-
    """ CNN 卷积神经网络 """
    import os
    os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'
    import numpy as np
    np.random.seed(1337)  # for reproducibility
    from keras.models import Sequential
    from keras.layers import Dense, Activation, Convolution2D, MaxPooling2D, Flatten
    import matplotlib.pyplot as plt
    from keras.utils import np_utils
    from keras.optimizers import Adam
    from keras.datasets import mnist
    from keras import backend
    backend.set_image_data_format('channels_first')
    
    # %% 数据预处理
    (X_train, Y_train), (X_test, Y_test) = mnist.load_data()
    X_train = X_train.reshape(-1, 1, 28 , 28)/255.
    X_test = X_test.reshape(-1, 1,28, 28)/255.
    Y_train =  np_utils.to_categorical(Y_train, num_classes=10)
    Y_test =  np_utils.to_categorical(Y_test, num_classes=10)
    
    # %% 建立模型
    model = Sequential()
    
    model.add(
        Convolution2D(
            batch_input_shape=(None, 1, 28, 28),
            filters=32,
            kernel_size=5,
            strides=1,
            padding='same'
        )
    )
    model.add(Activation('relu'))
    
    model.add(
        MaxPooling2D(
            pool_size=2,
            strides=2,
            padding='same',
        )
    )
    model.add(Activation('relu'))
    
    model.add(Convolution2D(64, 5, strides=1, padding='same'))
    model.add(Activation('relu'))
    
    model.add(MaxPooling2D(2,2,'same'))
    
    model.add(Flatten())
    model.add(Dense(1024))
    model.add(Activation('relu'))
    
    model.add(Dense(10))
    model.add(Activation('softmax'))
    adam = Adam(lr=1e-4)
    
    model.compile(optimizer=adam, loss='categorical_crossentropy', metrics=['accuracy'])
    
    # %% 训练
    print('Training ------------')
    model.fit(X_train,Y_train,batch_size=64)
    
    print('
    Testing ------------')
    loss, accuracy = model.evaluate(X_test, Y_test)
    
    # %% 评估
    print('
    test loss: ', loss)
    print('
    test accuracy: ', accuracy)
  • 相关阅读:
    Python实现DES加密算法
    空循环,g++ O2优化
    java 高并发下超购问题解决
    原型模式
    Lambda速学
    观察者模式
    略读策略模式
    .net 字典的速学
    执行计划准备篇
    关于“策略模式”与“桥接模式”的问题
  • 原文地址:https://www.cnblogs.com/Howbin/p/12588347.html
Copyright © 2011-2022 走看看