TensorFlow - Keras

  • 简述

    Keras 是运行在 TensorFlow 框架之上的紧凑、易于学习的高级 Python 库。它专注于理解深度学习技术,例如为保持形状和数学细节概念的神经网络创建层。创作框架作品可以是以下两种类型 -
    • 顺序API
    • 功能API
    考虑以下八个步骤在 Keras 中创建深度学习模型 -
    • 加载数据
    • 对加载的数据进行预处理
    • 模型定义
    • 编译模型
    • 拟合指定模型
    • 评估一下
    • 进行所需的预测
    • 保存模型
    我们将使用 Jupyter Notebook 执行和显示输出,如下所示 -
    Step 1 − 加载数据并对加载的数据进行预处理,以执行深度学习模型。
    
    import warnings
    warnings.filterwarnings('ignore')
    import numpy as np
    np.random.seed(123) # for reproducibility
    from keras.models import Sequential
    from keras.layers import Flatten, MaxPool2D, Conv2D, Dense, Reshape, Dropout
    from keras.utils import np_utils
    Using TensorFlow backend.
    from keras.datasets import mnist
    # Load pre-shuffled MNIST data into train and test sets
    (X_train, y_train), (X_test, y_test) = mnist.load_data()
    X_train = X_train.reshape(X_train.shape[0], 28, 28, 1)
    X_test = X_test.reshape(X_test.shape[0], 28, 28, 1)
    X_train = X_train.astype('float32')
    X_test = X_test.astype('float32')
    X_train /= 255
    X_test /= 255
    Y_train = np_utils.to_categorical(y_train, 10)
    Y_test = np_utils.to_categorical(y_test, 10)
    
    这一步可以定义为“导入库和模块”,这意味着所有库和模块都是作为初始步骤导入的。
    Step 2 − 在这一步中,我们将定义模型架构 −
    
    model = Sequential()
    model.add(Conv2D(32, 3, 3, activation = 'relu', input_shape = (28,28,1)))
    model.add(Conv2D(32, 3, 3, activation = 'relu'))
    model.add(MaxPool2D(pool_size = (2,2)))
    model.add(Dropout(0.25))
    model.add(Flatten())
    model.add(Dense(128, activation = 'relu'))
    model.add(Dropout(0.5))
    model.add(Dense(10, activation = 'softmax'))
    
    Step 3 - 现在让我们编译指定的模型 -
    
    model.compile(loss = 'categorical_crossentropy', optimizer = 'adam', metrics = ['accuracy'])
    
    Step 4 − 我们现在将使用训练数据拟合模型 −
    
    model.fit(X_train, Y_train, batch_size = 32, epochs = 10, verbose = 1)
    
    创建的迭代输出如下 -
    
    Epoch 1/10 60000/60000 [==============================] - 65s - 
    loss: 0.2124 - 
    acc: 0.9345 
    Epoch 2/10 60000/60000 [==============================] - 62s - 
    loss: 0.0893 - 
    acc: 0.9740 
    Epoch 3/10 60000/60000 [==============================] - 58s - 
    loss: 0.0665 - 
    acc: 0.9802 
    Epoch 4/10 60000/60000 [==============================] - 62s - 
    loss: 0.0571 - 
    acc: 0.9830 
    Epoch 5/10 60000/60000 [==============================] - 62s - 
    loss: 0.0474 - 
    acc: 0.9855 
    Epoch 6/10 60000/60000 [==============================] - 59s -
    loss: 0.0416 - 
    acc: 0.9871 
    Epoch 7/10 60000/60000 [==============================] - 61s - 
    loss: 0.0380 - 
    acc: 0.9877 
    Epoch 8/10 60000/60000 [==============================] - 63s - 
    loss: 0.0333 - 
    acc: 0.9895 
    Epoch 9/10 60000/60000 [==============================] - 64s - 
    loss: 0.0325 - 
    acc: 0.9898 
    Epoch 10/10 60000/60000 [==============================] - 60s - 
    loss: 0.0284 - 
    acc: 0.9910