Tensorflow 简明教程

TensorFlow - Keras

Keras 是一个紧凑、易于学习、高级的 Python 库,运行在 TensorFlow 框架之上。它的创建重点是理解深度学习技术,例如创建神经网络层,同时保持形状和数学细节的概念。框架的创建可以是以下两种类型 -

  1. Sequential API

  2. Functional API

考虑以下八个步骤在 Keras 中创建深度学习模型 -

  1. Loading the data

  2. Preprocess the loaded data

  3. Definition of model

  4. Compiling the model

  5. Fit the specified model

  6. Evaluate it

  7. Make the required predictions

  8. Save the model

我们将使用 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