博客
关于我
python+opencv人脸识别(模型训练cnn)解释超详细适合初学者2
阅读量:558 次
发布时间:2019-03-09

本文共 27085 字,大约阅读时间需要 90 分钟。

Keras学习中文版

发现一个超详细代码介绍 

原理部分见另外

import randomimport osos.environ['KERAS_BACKEND'] = 'tensorflow'from keras import backend as Kfrom keras.layers import Convolution2D, MaxPooling2Dfrom keras.layers import Dense, Dropout, Activation, Flattenfrom keras.models import Sequentialfrom keras.models import load_modelfrom keras.optimizers import SGDfrom keras.preprocessing.image import ImageDataGeneratorfrom keras.utils import np_utilsfrom sklearn.model_selection import train_test_splitfrom load_data import load_dataset, resize_image, IMAGE_SIZEclass Dataset:    def __init__(self, path_name):        # 训练集        self.train_images = None        self.train_labels = None        # 验证集        self.valid_images = None        self.valid_labels = None        # 测试集        self.test_images = None        self.test_labels = None        # 数据集加载路径        self.path_name = path_name        # 当前库采用的维度顺序        self.input_shape = None        self.nb_classes = None    # 加载数据集并按照交叉验证的原则划分数据集并进行相关预处理工作    def load(self, img_rows=IMAGE_SIZE, img_cols=IMAGE_SIZE,             img_channels=3):        # 加载数据集到内存        images, labels, face_num = load_dataset(self.path_name)        self.nb_classes = face_num        train_images, valid_images, train_labels, valid_labels = train_test_split(images, labels, test_size=0.3,                                                                                  random_state=random.randint(0, 100))        _, test_images, _, test_labels = train_test_split(images, labels, test_size=0.5,                                                          random_state=random.randint(0, 100))        # 当前的维度顺序如果为'th',则输入图片数据时的顺序为:channels,rows,cols,否则:rows,cols,channels        # 这部分代码就是根据keras库要求的维度顺序重组训练数据集        #if K.image_dim_ordering() == 'th':#版本原因可能出错        if K.image_data_format() == 'channels_first':            train_images = train_images.reshape(train_images.shape[0], img_channels, img_rows, img_cols)            valid_images = valid_images.reshape(valid_images.shape[0], img_channels, img_rows, img_cols)            test_images = test_images.reshape(test_images.shape[0], img_channels, img_rows, img_cols)            self.input_shape = (img_channels, img_rows, img_cols)        else:            train_images = train_images.reshape(train_images.shape[0], img_rows, img_cols, img_channels)            valid_images = valid_images.reshape(valid_images.shape[0], img_rows, img_cols, img_channels)            test_images = test_images.reshape(test_images.shape[0], img_rows, img_cols, img_channels)            self.input_shape = (img_rows, img_cols, img_channels)            # 输出训练集、验证集、测试集的数量            print(train_images.shape[0], 'train samples')            print(valid_images.shape[0], 'valid samples')            print(test_images.shape[0], 'test samples')            '''            我们的模型使用categorical_crossentropy作为损失函数,因此需要根据类别数量nb_classes将            类别标签进行one-hot编码使其向量化,在这里我们的类别只有两种,经过转化后标签数据变为二维            '''            train_labels = np_utils.to_categorical(train_labels, self.nb_classes)            valid_labels = np_utils.to_categorical(valid_labels, self.nb_classes)            test_labels = np_utils.to_categorical(test_labels, self.nb_classes)            # 像素数据浮点化以便归一化            train_images = train_images.astype('float32')            valid_images = valid_images.astype('float32')            test_images = test_images.astype('float32')            # 将其归一化,图像的各像素值归一化到0~1区间            train_images /= 255            valid_images /= 255            test_images /= 255            self.train_images = train_images            self.valid_images = valid_images            self.test_images = test_images            self.train_labels = train_labels            self.valid_labels = valid_labels            self.test_labels = test_labels# CNN网络模型类class Model:    def __init__(self):        self.model = None        # 建立模型    def build_model(self, dataset, nb_classes=5):        # 构建一个空的网络模型,它是一个线性堆叠模型,各神经网络层会被顺序添加,专业名称为序贯模型或线性堆叠模型        self.model = Sequential()        # 以下代码将顺序添加CNN网络需要的各层,一个add就是一个网络层        self.model.add(Convolution2D(32, 3, 3, border_mode='same',                                     input_shape=dataset.input_shape))  # 1 2维卷积层 卷积核 个数,大小,步长        self.model.add(Activation('relu'))  # 2 激活函数层        self.model.add(Convolution2D(32, 3, 3))  # 3 2维卷积层        self.model.add(Activation('relu'))  # 4 激活函数层        self.model.add(MaxPooling2D(pool_size=(2, 2)))  # 5 池化层        self.model.add(Dropout(0.25))  # 6 Dropout层        self.model.add(Convolution2D(64, 3, 3, border_mode='same'))  # 7  2维卷积层        self.model.add(Activation('relu'))  # 8  激活函数层        self.model.add(Convolution2D(64, 3, 3))  # 9  2维卷积层        self.model.add(Activation('relu'))  # 10 激活函数层        self.model.add(MaxPooling2D(pool_size=(2, 2)))  # 11 池化层        self.model.add(Dropout(0.25))  # 12 Dropout层        self.model.add(Flatten())  # 13 Flatten层        self.model.add(Dense(512))  # 14 Dense层,又被称作全连接层        self.model.add(Activation('relu'))  # 15 激活函数层        self.model.add(Dropout(0.5))  # 16 Dropout层        self.model.add(Dense(nb_classes))  # 17 Dense层        self.model.add(Activation('softmax'))  # 18 分类层,输出最终结果        # 输出模型概况        self.model.summary()    # 训练模型    def train(self, dataset, batch_size=20, nb_epoch=10, data_augmentation=True):        sgd = SGD(lr=0.0007, decay=1e-6,                  momentum=0.9, nesterov=True)  # 采用SGD+momentum的优化器进行训练,首先生成一个优化器对象        self.model.compile(loss='categorical_crossentropy',                           optimizer=sgd,                           metrics=['accuracy'])  # 完成实际的模型配置工作        # 不使用数据提升,所谓的提升就是从我们提供的训练数据中利用旋转、翻转、加噪声等方法创造新的        # 训练数据,有意识的提升训练数据规模,增加模型训练量        if not data_augmentation:            self.model.fit(dataset.train_images,                           dataset.train_labels,                           batch_size=batch_size,                           nb_epoch=nb_epoch,                           validation_data=(dataset.valid_images, dataset.valid_labels),                           shuffle=True)        # 使用实时数据提升        else:            # 定义数据生成器用于数据提升,其返回一个生成器对象datagen,datagen每被调用一            # 次其生成一组数据(顺序生成),节省内存,其实就是python的数据生成器            datagen = ImageDataGenerator(                featurewise_center=False,  # 是否使输入数据去中心化(均值为0),                samplewise_center=False,  # 是否使输入数据的每个样本均值为0                featurewise_std_normalization=False,  # 是否数据标准化(输入数据除以数据集的标准差)                samplewise_std_normalization=False,  # 是否将每个样本数据除以自身的标准差                zca_whitening=False,  # 是否对输入数据施以ZCA白化                rotation_range=20,  # 数据提升时图片随机转动的角度(范围为0~180)                width_shift_range=0.2,  # 数据提升时图片水平偏移的幅度(单位为图片宽度的占比,0~1之间的浮点数)                height_shift_range=0.2,  # 同上,只不过这里是垂直                horizontal_flip=True,  # 是否进行随机水平翻转                vertical_flip=False)  # 是否进行随机垂直翻转            # 计算整个训练样本集的数量以用于特征值归一化、ZCA白化等处理            datagen.fit(dataset.train_images)            # 利用生成器开始训练模型            self.model.fit_generator(datagen.flow(dataset.train_images, dataset.train_labels,                                                  batch_size=batch_size),                                     samples_per_epoch=dataset.train_images.shape[0],                                     nb_epoch=nb_epoch,                                     validation_data=(dataset.valid_images, dataset.valid_labels))    MODEL_PATH = './model/face1.model'    def save_model(self, file_path=MODEL_PATH):        self.model.save(file_path)    def load_model(self, file_path=MODEL_PATH):        self.model = load_model(file_path)    def evaluate(self, dataset):        score = self.model.evaluate(dataset.test_images, dataset.test_labels, verbose=1)        print("%s: %.2f%%" % (self.model.metrics_names[1], score[1] * 100))    # 识别人脸    def face_predict(self, image):        # 依然是根据后端系统确定维度顺序        if K.image_dim_ordering() == 'th' and image.shape != (1, 3, IMAGE_SIZE, IMAGE_SIZE):            image = resize_image(image)  # 尺寸必须与训练集一致都应该是IMAGE_SIZE x IMAGE_SIZE            image = image.reshape((1, 3, IMAGE_SIZE, IMAGE_SIZE))  # 与模型训练不同,这次只是针对1张图片进行预测        elif K.image_dim_ordering() == 'tf' and image.shape != (1, IMAGE_SIZE, IMAGE_SIZE, 3):            image = resize_image(image)            image = image.reshape((1, IMAGE_SIZE, IMAGE_SIZE, 3))            # 浮点并归一化        image = image.astype('float32')        image /= 255        # 给出输入属于各个类别的概率        result_probability = self.model.predict_proba(image)        print('result:', result_probability, max(result_probability[0]))        # 给出类别预测:0-9        result = self.model.predict_classes(image)        # 返回类别预测结果        return max(result_probability[0]),result[0]if __name__ == '__main__':    dataset = Dataset('./data/')    dataset.load()    model = Model()    model.build_model(dataset, dataset.nb_classes)    model.train(dataset)    model.save_model(file_path='./model/face1.model')    model.evaluate(dataset)

训练 结果

374 train samples
161 valid samples
268 test samples
Model: "sequential_1"
_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
conv2d_1 (Conv2D)            (None, 64, 64, 32)        896       
_________________________________________________________________
activation_1 (Activation)    (None, 64, 64, 32)        0         
_________________________________________________________________
conv2d_2 (Conv2D)            (None, 62, 62, 32)        9248      
_________________________________________________________________
activation_2 (Activation)    (None, 62, 62, 32)        0         
_________________________________________________________________
max_pooling2d_1 (MaxPooling2 (None, 31, 31, 32)        0         
_________________________________________________________________
dropout_1 (Dropout)          (None, 31, 31, 32)        0         
_________________________________________________________________
conv2d_3 (Conv2D)            (None, 31, 31, 64)        18496     
_________________________________________________________________
activation_3 (Activation)    (None, 31, 31, 64)        0         
_________________________________________________________________
conv2d_4 (Conv2D)            (None, 29, 29, 64)        36928     
_________________________________________________________________
activation_4 (Activation)    (None, 29, 29, 64)        0         
_________________________________________________________________
max_pooling2d_2 (MaxPooling2 (None, 14, 14, 64)        0         
_________________________________________________________________
dropout_2 (Dropout)          (None, 14, 14, 64)        0         
_________________________________________________________________
flatten_1 (Flatten)          (None, 12544)             0         
_________________________________________________________________
dense_1 (Dense)              (None, 512)               6423040   
_________________________________________________________________
activation_5 (Activation)    (None, 512)               0         
_________________________________________________________________
dropout_3 (Dropout)          (None, 512)               0         
_________________________________________________________________
dense_2 (Dense)              (None, 2)                 1026      
_________________________________________________________________
activation_6 (Activation)    (None, 2)                 0         
=================================================================
Total params: 6,489,634
Trainable params: 6,489,634
Non-trainable params: 0
Epoch 1/10

 1/18 [>.............................] - ETA: 48s - loss: 0.6389 - accuracy: 0.6500

 2/18 [==>...........................] - ETA: 27s - loss: 0.6374 - accuracy: 0.6250
 3/18 [====>.........................] - ETA: 19s - loss: 0.6457 - accuracy: 0.6167
 4/18 [=====>........................] - ETA: 14s - loss: 0.6392 - accuracy: 0.6250
 5/18 [=======>......................] - ETA: 11s - loss: 0.6323 - accuracy: 0.6300
 6/18 [=========>....................] - ETA: 9s - loss: 0.6434 - accuracy: 0.6083 
 7/18 [==========>...................] - ETA: 8s - loss: 0.6552 - accuracy: 0.6143
 8/18 [============>.................] - ETA: 6s - loss: 0.6521 - accuracy: 0.6169
 9/18 [==============>...............] - ETA: 5s - loss: 0.6560 - accuracy: 0.6149
10/18 [===============>..............] - ETA: 4s - loss: 0.6520 - accuracy: 0.6237
11/18 [=================>............] - ETA: 3s - loss: 0.6492 - accuracy: 0.6308
12/18 [===================>..........] - ETA: 3s - loss: 0.6476 - accuracy: 0.6282
13/18 [====================>.........] - ETA: 2s - loss: 0.6429 - accuracy: 0.6339
14/18 [======================>.......] - ETA: 2s - loss: 0.6354 - accuracy: 0.6423
15/18 [========================>.....] - ETA: 1s - loss: 0.6330 - accuracy: 0.6463
16/18 [=========================>....] - ETA: 0s - loss: 0.6348 - accuracy: 0.6401
17/18 [===========================>..] - ETA: 0s - loss: 0.6403 - accuracy: 0.6347
18/18 [==============================] - 9s 498ms/step - loss: 0.6350 - accuracy: 0.6412 - val_loss: 0.6009 - val_accuracy: 0.6584
Epoch 2/10

 1/18 [>.............................] - ETA: 5s - loss: 0.6829 - accuracy: 0.6000

 2/18 [==>...........................] - ETA: 5s - loss: 0.6944 - accuracy: 0.5500
 3/18 [====>.........................] - ETA: 4s - loss: 0.6747 - accuracy: 0.5833
 4/18 [=====>........................] - ETA: 4s - loss: 0.6857 - accuracy: 0.5625
 5/18 [=======>......................] - ETA: 4s - loss: 0.6564 - accuracy: 0.6100
 6/18 [=========>....................] - ETA: 3s - loss: 0.6321 - accuracy: 0.6417
 7/18 [==========>...................] - ETA: 3s - loss: 0.6142 - accuracy: 0.6643
 8/18 [============>.................] - ETA: 3s - loss: 0.6143 - accuracy: 0.6623
 9/18 [==============>...............] - ETA: 2s - loss: 0.6040 - accuracy: 0.6724
10/18 [===============>..............] - ETA: 2s - loss: 0.6009 - accuracy: 0.6753
11/18 [=================>............] - ETA: 2s - loss: 0.6111 - accuracy: 0.6542
12/18 [===================>..........] - ETA: 1s - loss: 0.6159 - accuracy: 0.6453
13/18 [====================>.........] - ETA: 1s - loss: 0.6183 - accuracy: 0.6417
14/18 [======================>.......] - ETA: 1s - loss: 0.6116 - accuracy: 0.6496
15/18 [========================>.....] - ETA: 0s - loss: 0.6162 - accuracy: 0.6395
16/18 [=========================>....] - ETA: 0s - loss: 0.6103 - accuracy: 0.6433
17/18 [===========================>..] - ETA: 0s - loss: 0.6043 - accuracy: 0.6527
18/18 [==============================] - 6s 335ms/step - loss: 0.6079 - accuracy: 0.6469 - val_loss: 0.5700 - val_accuracy: 0.6584
Epoch 3/10

 1/18 [>.............................] - ETA: 5s - loss: 0.7328 - accuracy: 0.5000

 2/18 [==>...........................] - ETA: 5s - loss: 0.5827 - accuracy: 0.7250
 3/18 [====>.........................] - ETA: 4s - loss: 0.5838 - accuracy: 0.7222
 4/18 [=====>........................] - ETA: 4s - loss: 0.5677 - accuracy: 0.7162
 5/18 [=======>......................] - ETA: 4s - loss: 0.5515 - accuracy: 0.7234
 6/18 [=========>....................] - ETA: 3s - loss: 0.5562 - accuracy: 0.7018
 7/18 [==========>...................] - ETA: 3s - loss: 0.5656 - accuracy: 0.6791
 8/18 [============>.................] - ETA: 3s - loss: 0.5731 - accuracy: 0.6688
 9/18 [==============>...............] - ETA: 2s - loss: 0.5767 - accuracy: 0.6552
10/18 [===============>..............] - ETA: 2s - loss: 0.5662 - accuracy: 0.6649
11/18 [=================>............] - ETA: 2s - loss: 0.5722 - accuracy: 0.6542
12/18 [===================>..........] - ETA: 1s - loss: 0.5742 - accuracy: 0.6538
13/18 [====================>.........] - ETA: 1s - loss: 0.5725 - accuracy: 0.6575
14/18 [======================>.......] - ETA: 1s - loss: 0.5704 - accuracy: 0.6642
15/18 [========================>.....] - ETA: 1s - loss: 0.5704 - accuracy: 0.6633
16/18 [=========================>....] - ETA: 0s - loss: 0.5646 - accuracy: 0.6688
17/18 [===========================>..] - ETA: 0s - loss: 0.5635 - accuracy: 0.6677
18/18 [==============================] - 6s 361ms/step - loss: 0.5663 - accuracy: 0.6667 - val_loss: 0.5245 - val_accuracy: 0.6584
Epoch 4/10

 1/18 [>.............................] - ETA: 6s - loss: 0.5439 - accuracy: 0.6500

 2/18 [==>...........................] - ETA: 7s - loss: 0.5967 - accuracy: 0.6000
 3/18 [====>.........................] - ETA: 7s - loss: 0.5630 - accuracy: 0.6500
 4/18 [=====>........................] - ETA: 6s - loss: 0.5582 - accuracy: 0.6500
 5/18 [=======>......................] - ETA: 5s - loss: 0.5443 - accuracy: 0.6600
 6/18 [=========>....................] - ETA: 5s - loss: 0.5199 - accuracy: 0.6917
 7/18 [==========>...................] - ETA: 4s - loss: 0.5203 - accuracy: 0.6786
 8/18 [============>.................] - ETA: 4s - loss: 0.5448 - accuracy: 0.6494
 9/18 [==============>...............] - ETA: 3s - loss: 0.5587 - accuracy: 0.6322
10/18 [===============>..............] - ETA: 3s - loss: 0.5526 - accuracy: 0.6495
11/18 [=================>............] - ETA: 2s - loss: 0.5463 - accuracy: 0.6542
12/18 [===================>..........] - ETA: 2s - loss: 0.5350 - accuracy: 0.6709
13/18 [====================>.........] - ETA: 1s - loss: 0.5321 - accuracy: 0.6732
14/18 [======================>.......] - ETA: 1s - loss: 0.5393 - accuracy: 0.6642
15/18 [========================>.....] - ETA: 1s - loss: 0.5336 - accuracy: 0.6701
16/18 [=========================>....] - ETA: 0s - loss: 0.5266 - accuracy: 0.6752
17/18 [===========================>..] - ETA: 0s - loss: 0.5275 - accuracy: 0.6766
18/18 [==============================] - 7s 392ms/step - loss: 0.5204 - accuracy: 0.6864 - val_loss: 0.4376 - val_accuracy: 0.7516
Epoch 5/10

 1/18 [>.............................] - ETA: 5s - loss: 0.4689 - accuracy: 0.7000

 2/18 [==>...........................] - ETA: 5s - loss: 0.5072 - accuracy: 0.6500
 3/18 [====>.........................] - ETA: 4s - loss: 0.4896 - accuracy: 0.7000
 4/18 [=====>........................] - ETA: 4s - loss: 0.4796 - accuracy: 0.7125
 5/18 [=======>......................] - ETA: 4s - loss: 0.4606 - accuracy: 0.7400
 6/18 [=========>....................] - ETA: 4s - loss: 0.4284 - accuracy: 0.7750
 7/18 [==========>...................] - ETA: 3s - loss: 0.4143 - accuracy: 0.7857
 8/18 [============>.................] - ETA: 3s - loss: 0.4094 - accuracy: 0.7750
 9/18 [==============>...............] - ETA: 3s - loss: 0.4267 - accuracy: 0.7500
10/18 [===============>..............] - ETA: 2s - loss: 0.4284 - accuracy: 0.7450
11/18 [=================>............] - ETA: 2s - loss: 0.4240 - accuracy: 0.7591
12/18 [===================>..........] - ETA: 2s - loss: 0.4187 - accuracy: 0.7792
13/18 [====================>.........] - ETA: 1s - loss: 0.4275 - accuracy: 0.7692
14/18 [======================>.......] - ETA: 1s - loss: 0.4220 - accuracy: 0.7857
15/18 [========================>.....] - ETA: 1s - loss: 0.4244 - accuracy: 0.7933
16/18 [=========================>....] - ETA: 0s - loss: 0.4263 - accuracy: 0.7969
17/18 [===========================>..] - ETA: 0s - loss: 0.4223 - accuracy: 0.8000
18/18 [==============================] - 7s 379ms/step - loss: 0.4186 - accuracy: 0.8083 - val_loss: 0.3016 - val_accuracy: 0.9876
Epoch 6/10

 1/18 [>.............................] - ETA: 5s - loss: 0.3389 - accuracy: 1.0000

 2/18 [==>...........................] - ETA: 5s - loss: 0.3579 - accuracy: 0.9250
 3/18 [====>.........................] - ETA: 5s - loss: 0.3523 - accuracy: 0.9333
 4/18 [=====>........................] - ETA: 4s - loss: 0.3374 - accuracy: 0.9375
 5/18 [=======>......................] - ETA: 4s - loss: 0.3250 - accuracy: 0.9468
 6/18 [=========>....................] - ETA: 4s - loss: 0.3273 - accuracy: 0.9298
 7/18 [==========>...................] - ETA: 3s - loss: 0.3332 - accuracy: 0.9104
 8/18 [============>.................] - ETA: 3s - loss: 0.3204 - accuracy: 0.9156
 9/18 [==============>...............] - ETA: 3s - loss: 0.3251 - accuracy: 0.9023
10/18 [===============>..............] - ETA: 2s - loss: 0.3152 - accuracy: 0.9124
11/18 [=================>............] - ETA: 2s - loss: 0.3149 - accuracy: 0.9206
12/18 [===================>..........] - ETA: 2s - loss: 0.3111 - accuracy: 0.9188
13/18 [====================>.........] - ETA: 1s - loss: 0.3046 - accuracy: 0.9213
14/18 [======================>.......] - ETA: 1s - loss: 0.2935 - accuracy: 0.9270
15/18 [========================>.....] - ETA: 1s - loss: 0.2881 - accuracy: 0.9286
16/18 [=========================>....] - ETA: 0s - loss: 0.2808 - accuracy: 0.9299
17/18 [===========================>..] - ETA: 0s - loss: 0.2738 - accuracy: 0.9341
18/18 [==============================] - 7s 376ms/step - loss: 0.2713 - accuracy: 0.9322 - val_loss: 0.1445 - val_accuracy: 1.0000
Epoch 7/10

 1/18 [>.............................] - ETA: 6s - loss: 0.2642 - accuracy: 0.9000

 2/18 [==>...........................] - ETA: 5s - loss: 0.2516 - accuracy: 0.9000
 3/18 [====>.........................] - ETA: 4s - loss: 0.2301 - accuracy: 0.9259
 4/18 [=====>........................] - ETA: 4s - loss: 0.2276 - accuracy: 0.9324
 5/18 [=======>......................] - ETA: 4s - loss: 0.2158 - accuracy: 0.9362
 6/18 [=========>....................] - ETA: 3s - loss: 0.2158 - accuracy: 0.9386
 7/18 [==========>...................] - ETA: 3s - loss: 0.2090 - accuracy: 0.9403
 8/18 [============>.................] - ETA: 3s - loss: 0.2086 - accuracy: 0.9351
 9/18 [==============>...............] - ETA: 2s - loss: 0.1988 - accuracy: 0.9425
10/18 [===============>..............] - ETA: 2s - loss: 0.1897 - accuracy: 0.9485
11/18 [=================>............] - ETA: 2s - loss: 0.1795 - accuracy: 0.9533
12/18 [===================>..........] - ETA: 1s - loss: 0.1819 - accuracy: 0.9530
13/18 [====================>.........] - ETA: 1s - loss: 0.1795 - accuracy: 0.9567
14/18 [======================>.......] - ETA: 1s - loss: 0.1791 - accuracy: 0.9562
15/18 [========================>.....] - ETA: 0s - loss: 0.1705 - accuracy: 0.9592
16/18 [=========================>....] - ETA: 0s - loss: 0.1642 - accuracy: 0.9618
17/18 [===========================>..] - ETA: 0s - loss: 0.1654 - accuracy: 0.9581
18/18 [==============================] - 6s 344ms/step - loss: 0.1640 - accuracy: 0.9598 - val_loss: 0.0638 - val_accuracy: 0.9938
Epoch 8/10

 1/18 [>.............................] - ETA: 5s - loss: 0.0661 - accuracy: 1.0000

 2/18 [==>...........................] - ETA: 4s - loss: 0.0745 - accuracy: 1.0000
 3/18 [====>.........................] - ETA: 4s - loss: 0.0855 - accuracy: 1.0000
 4/18 [=====>........................] - ETA: 4s - loss: 0.0884 - accuracy: 1.0000
 5/18 [=======>......................] - ETA: 4s - loss: 0.0967 - accuracy: 0.9900
 6/18 [=========>....................] - ETA: 3s - loss: 0.0848 - accuracy: 0.9917
 7/18 [==========>...................] - ETA: 3s - loss: 0.0837 - accuracy: 0.9857
 8/18 [============>.................] - ETA: 3s - loss: 0.0905 - accuracy: 0.9812
 9/18 [==============>...............] - ETA: 2s - loss: 0.0837 - accuracy: 0.9828
10/18 [===============>..............] - ETA: 2s - loss: 0.0884 - accuracy: 0.9794
11/18 [=================>............] - ETA: 2s - loss: 0.0871 - accuracy: 0.9813
12/18 [===================>..........] - ETA: 2s - loss: 0.0876 - accuracy: 0.9829
13/18 [====================>.........] - ETA: 1s - loss: 0.0893 - accuracy: 0.9803
14/18 [======================>.......] - ETA: 1s - loss: 0.0862 - accuracy: 0.9818
15/18 [========================>.....] - ETA: 1s - loss: 0.0830 - accuracy: 0.9830
16/18 [=========================>....] - ETA: 0s - loss: 0.0841 - accuracy: 0.9809
17/18 [===========================>..] - ETA: 0s - loss: 0.0858 - accuracy: 0.9790
18/18 [==============================] - 7s 406ms/step - loss: 0.0831 - accuracy: 0.9802 - val_loss: 0.0338 - val_accuracy: 0.9938
Epoch 9/10

 1/18 [>.............................] - ETA: 5s - loss: 0.0913 - accuracy: 0.9500

 2/18 [==>...........................] - ETA: 5s - loss: 0.0608 - accuracy: 0.9750
 3/18 [====>.........................] - ETA: 5s - loss: 0.0717 - accuracy: 0.9667
 4/18 [=====>........................] - ETA: 4s - loss: 0.0645 - accuracy: 0.9750
 5/18 [=======>......................] - ETA: 4s - loss: 0.0877 - accuracy: 0.9600
 6/18 [=========>....................] - ETA: 4s - loss: 0.0920 - accuracy: 0.9583
 7/18 [==========>...................] - ETA: 3s - loss: 0.0882 - accuracy: 0.9643
 8/18 [============>.................] - ETA: 3s - loss: 0.0853 - accuracy: 0.9625
 9/18 [==============>...............] - ETA: 3s - loss: 0.0846 - accuracy: 0.9667
10/18 [===============>..............] - ETA: 3s - loss: 0.0890 - accuracy: 0.9650
11/18 [=================>............] - ETA: 2s - loss: 0.1150 - accuracy: 0.9409
12/18 [===================>..........] - ETA: 2s - loss: 0.1293 - accuracy: 0.9375
13/18 [====================>.........] - ETA: 1s - loss: 0.1628 - accuracy: 0.9291
14/18 [======================>.......] - ETA: 1s - loss: 0.2432 - accuracy: 0.9015
15/18 [========================>.....] - ETA: 1s - loss: 0.2775 - accuracy: 0.8946
16/18 [=========================>....] - ETA: 0s - loss: 0.2833 - accuracy: 0.8917
17/18 [===========================>..] - ETA: 0s - loss: 0.2679 - accuracy: 0.8982
18/18 [==============================] - 8s 424ms/step - loss: 0.2613 - accuracy: 0.9011 - val_loss: 0.0490 - val_accuracy: 0.9752
Epoch 10/10

 1/18 [>.............................] - ETA: 7s - loss: 0.0377 - accuracy: 1.0000

 2/18 [==>...........................] - ETA: 6s - loss: 0.0480 - accuracy: 1.0000
 3/18 [====>.........................] - ETA: 6s - loss: 0.0612 - accuracy: 1.0000
 4/18 [=====>........................] - ETA: 5s - loss: 0.0713 - accuracy: 0.9875
 5/18 [=======>......................] - ETA: 5s - loss: 0.0682 - accuracy: 0.9900
 6/18 [=========>....................] - ETA: 5s - loss: 0.0671 - accuracy: 0.9917
 7/18 [==========>...................] - ETA: 4s - loss: 0.0813 - accuracy: 0.9857
 8/18 [============>.................] - ETA: 4s - loss: 0.0763 - accuracy: 0.9875
 9/18 [==============>...............] - ETA: 3s - loss: 0.0720 - accuracy: 0.9889
10/18 [===============>..............] - ETA: 3s - loss: 0.0726 - accuracy: 0.9850
11/18 [=================>............] - ETA: 3s - loss: 0.0722 - accuracy: 0.9818
12/18 [===================>..........] - ETA: 2s - loss: 0.0713 - accuracy: 0.9833
13/18 [====================>.........] - ETA: 2s - loss: 0.0696 - accuracy: 0.9846
14/18 [======================>.......] - ETA: 1s - loss: 0.0727 - accuracy: 0.9821
15/18 [========================>.....] - ETA: 1s - loss: 0.0695 - accuracy: 0.9833
16/18 [=========================>....] - ETA: 0s - loss: 0.0669 - accuracy: 0.9844
17/18 [===========================>..] - ETA: 0s - loss: 0.0657 - accuracy: 0.9853
18/18 [==============================] - 8s 444ms/step - loss: 0.0632 - accuracy: 0.9861 - val_loss: 0.0322 - val_accuracy: 0.9938

 32/268 [==>...........................] - ETA: 0s

 64/268 [======>.......................] - ETA: 0s
 96/268 [=========>....................] - ETA: 0s
128/268 [=============>................] - ETA: 0s
160/268 [================>.............] - ETA: 0s
192/268 [====================>.........] - ETA: 0s
224/268 [========================>.....] - ETA: 0s
256/268 [===========================>..] - ETA: 0s
268/268 [==============================] - 1s 3ms/step
accuracy: 99.25%

转载地址:http://fdupz.baihongyu.com/

你可能感兴趣的文章
mysql5.7 安装版 表不能输入汉字解决方案
查看>>
MySQL5.7.18主从复制搭建(一主一从)
查看>>
MySQL5.7.19-win64安装启动
查看>>
mysql5.7.19安装图解_mysql5.7.19 winx64解压缩版安装配置教程
查看>>
MySQL5.7.37windows解压版的安装使用
查看>>
mysql5.7免费下载地址
查看>>
mysql5.7命令总结
查看>>
mysql5.7安装
查看>>
mysql5.7性能调优my.ini
查看>>
MySQL5.7新增Performance Schema表
查看>>
Mysql5.7深入学习 1.MySQL 5.7 中的新增功能
查看>>
Webpack 之 basic chunk graph
查看>>
Mysql5.7版本单机版my.cnf配置文件
查看>>
mysql5.7的安装和Navicat的安装
查看>>
mysql5.7示例数据库_Linux MySQL5.7多实例数据库配置
查看>>
Mysql8 数据库安装及主从配置 | Spring Cloud 2
查看>>
mysql8 配置文件配置group 问题 sql语句group不能使用报错解决 mysql8.X版本的my.cnf配置文件 my.cnf文件 能够使用的my.cnf配置文件
查看>>
MySQL8.0.29启动报错Different lower_case_table_names settings for server (‘0‘) and data dictionary (‘1‘)
查看>>
MYSQL8.0以上忘记root密码
查看>>
Mysql8.0以上重置初始密码的方法
查看>>