深度学习第五周 tensorflow实现运动鞋种类识别

一、本周学习内容:

1、使用tensorflow中的回调函数,进行学习率动态调整以及早停

# 动态学习率设置
initial_learing_rate = 0.01# 设置初始学习率
lr_schedule = tf.keras.optimizers.schedules.ExponentialDecay(
    initial_learing_rate,
    decay_steps=8,    # 训练多少个steps衰减一次(注意不是epochs) staircase = True 时有效
    decay_rate = 0.92, # 衰减的比例 用原本学习率乘以该数值获得衰减后的学习率
    staircase = True   # 如果为True, 学习率呈现阶梯型下降趋势.
)
model.compile(optimizer=keras.optimizers.Adam(learning_rate=lr_schedule),loss=keras.losses.SparseCategoricalCrossentropy(from_logits=True),metrics=['acc'])
# 设置早停
earlystopper = EarlyStopping(
    monitor="val_accuracy",  # 被检测的数据
    min_delta=0.001,    # 被检测数据中被认为的最小变化值
    patience=20,    # 训练没有进步的轮次
    verbose=1   # 日志
)

二、前言

我们的运动鞋图片共有578张,四个类别,类别即为文件夹名。
类别包括:[‘adidas’, ‘nike’]
在我们使用tensorflow.keras.preprocessing.image_dataset_from_directory()函数读取后会弹出下列提示
Found 502 files belonging to 2 classes.
发现502个文件2个类别
Found 76 files belonging to 2 classes.
使用76 个文件作为验证集

三、电脑环境

电脑系统:Windows 10
语言环境:Python 3.8.8
编译器:Pycharm 2021.1.3
深度学习环境:TensorFlow 2.8.0,keras 2.8.0
显卡及显存:RTX 3070 8G

四、前期准备

1、导入相关依赖项

from keras.models import Sequential
from keras.layers import *
from tensorflow import keras
from keras.callbacks import ModelCheckpoint
import tensorflow as tf
import matplotlib.pyplot as plt

2、设置GPU(我下载的tensorflow-gpu 默认使用GPU)

只使用GPU

if gpus:
    gpu0 = gpus[0]                                        #如果有多个GPU,仅使用第0个GPU
    tf.config.experimental.set_memory_growth(gpu0, True)  #设置GPU显存用量按需使用
    tf.config.set_visible_devices([gpu0],"GPU")

使用cpu和gpu
os.environ[“CUDA_VISIBLE_DEVICES”] = “-1”

3、加载数据集和展示

(1)、数据集加载

# 数据集加载
traindatadir = "./dataset/train"
testdatadir = "./dataset/test"
train = keras.preprocessing.image_dataset_from_directory(directory=traindatadir,
                                                           seed=123,
                                                           image_size=(240,240),
                                                           batch_size=32)
val = keras.preprocessing.image_dataset_from_directory(directory=testdatadir,
                                                           seed=123,
                                                           image_size=(240,240),
                                                           batch_size=32)
class_names = train.class_names
print(class_names)

(2)、数据展示

图片展示(与上周相同)

# 图片展示
plt.figure(figsize=(20, 5))  # 创建一个画布,画布大小为宽20、高5(单位为英寸inch)
for images,labels in train.take(1):
    for i in range(20):
     # 将整个画布分成2行10列,绘制第i+1个子图。
       plt.subplot(2, 10, i+1)
       plt.imshow(images[i].numpy().astype("uint8"), cmap=plt.cm.binary)
       plt.title(class_names[labels[i]])
       plt.axis('off')

plt.show()  #使用pycharm的需要加入这行代码才能将图像显示出来
# train.take(i) 取出第i组图片数据和标签,即将所有图片打包后一个batch为32,
# 所以i最大值为1714/32=54组

在这里插入图片描述

五、数据预处理

由于我们使用的是tensorflow.keras.preprocessing.image_dataset_from_directory()函数加载的数据集和之前的不一样,我们需要更改第一层网络层对数据进行预处理,但是注意,这个函数读取后标签并不是热编码格式
标签格式为:
tf.Tensor([1 1 1 0 0 1 1 0 0 1 1 1 0 0 0 1 0 1 0 1 0 1 0 1 1 0 1 0 0 0 0 1], shape=(32,), dtype=int32)
使用数字 0,1表示各个类别

# 数据预处理
tf.keras.layers.experimental.preprocessing.Rescaling(1./255,input_shape=(240,240,3))

六、搭建CNN网络

除网络层第一层和最后一层有所更改,其余和前两周大致相同

# 网络模型
model = Sequential([
    tf.keras.layers.experimental.preprocessing.Rescaling(1./255,input_shape=(240,240,3)),
    Conv2D(filters=32,kernel_size=3,activation='relu',input_shape=(240,240,3)),
    MaxPool2D((2,2)),
    Conv2D(filters=64,kernel_size=3,activation='relu'),
    MaxPool2D((2,2)),
    Flatten(),
    Dense(64,activation='relu'),
    Dense(len(class_names))
])

print(model.summary())
# 设置保存最优模型
checkpointer = ModelCheckpoint(
    filepath='models_weights.h5', #模型保存位置
    monitor='val_acc',   # 监测参数
    verbose=1,      # 0为不输出日志信息,1为输出进度条记录,2为每个epoch输出一条记录
    save_best_only=True,  # 仅保存最优模型
    save_weights_only= True # 仅保存权重文件 注意如果仅保存权重模型,还需要自己搭建原模型对应的网络
)
# 设置早停
earlystopper = EarlyStopping(
    monitor="val_accuracy",  # 被检测的数据
    min_delta=0.001,    # 被检测数据中被认为的最小变化值
    patience=20,    # 训练没有进步的轮次
    verbose=1   # 日志
)
# 设置 动态学习率
initial_learing_rate = 0.001
lr_schedule = tf.keras.optimizers.schedules.ExponentialDecay(
    initial_learing_rate,
    decay_steps=8,    # 训练多少个steps衰减一次(注意不是epochs) staircase = True 时有效
    decay_rate = 0.92, # 衰减的比例 用原本学习率乘以该数值获得衰减后的学习率
    staircase = True   # 如果为True, 学习率呈现阶梯型下降趋势.
)


model.compile(optimizer=keras.optimizers.SGD(learning_rate=lr_schedule),loss=keras.losses.SparseCategoricalCrossentropy(from_logits=True),metrics=['acc'])
history = model.fit(train,validation_data=val,epochs=50,verbose=1,
                    callbacks=[checkpointer,earlystopper])
evaluate = model.evaluate(val)

print(evaluate)
Epoch 1/50
16/16 [==============================] - ETA: 0s - loss: 0.7004 - acc: 0.5279
Epoch 1: val_acc improved from -inf to 0.52632, saving model to models_weights.h5
WARNING:tensorflow:Early stopping conditioned on metric `val_accuracy` which is not available. Available metrics are: loss,acc,val_loss,val_acc
16/16 [==============================] - 5s 96ms/step - loss: 0.7004 - acc: 0.5279 - val_loss: 0.6863 - val_acc: 0.5263
Epoch 2/50
15/16 [===========================>..] - ETA: 0s - loss: 0.6928 - acc: 0.5292
Epoch 2: val_acc did not improve from 0.52632
16/16 [==============================] - 1s 37ms/step - loss: 0.6936 - acc: 0.5219 - val_loss: 0.6916 - val_acc: 0.5000
Epoch 3/50
WARNING:tensorflow:Early stopping conditioned on metric `val_accuracy` which is not available. Available metrics are: loss,acc,val_loss,val_acc
15/16 [===========================>..] - ETA: 0s - loss: 0.6922 - acc: 0.5146
WARNING:tensorflow:Early stopping conditioned on metric `val_accuracy` which is not available. Available metrics are: loss,acc,val_loss,val_acc
Epoch 3: val_acc did not improve from 0.52632
16/16 [==============================] - 1s 37ms/step - loss: 0.6921 - acc: 0.5139 - val_loss: 0.6909 - val_acc: 0.5000
Epoch 4/50
15/16 [===========================>..] - ETA: 0s - loss: 0.6923 - acc: 0.5271
Epoch 4: val_acc improved from 0.52632 to 0.57895, saving model to models_weights.h5
WARNING:tensorflow:Early stopping conditioned on metric `val_accuracy` which is not available. Available metrics are: loss,acc,val_loss,val_acc
16/16 [==============================] - 1s 75ms/step - loss: 0.6921 - acc: 0.5319 - val_loss: 0.6891 - val_acc: 0.5789
Epoch 5/50
15/16 [===========================>..] - ETA: 0s - loss: 0.6896 - acc: 0.5375
Epoch 5: val_acc did not improve from 0.57895
16/16 [==============================] - 1s 37ms/step - loss: 0.6891 - acc: 0.5458 - val_loss: 0.6788 - val_acc: 0.5395
Epoch 6/50
WARNING:tensorflow:Early stopping conditioned on metric `val_accuracy` which is not available. Available metrics are: loss,acc,val_loss,val_acc
15/16 [===========================>..] - ETA: 0s - loss: 0.6877 - acc: 0.5437
Epoch 6: val_acc did not improve from 0.57895
16/16 [==============================] - 1s 37ms/step - loss: 0.6872 - acc: 0.5478 - val_loss: 0.6772 - val_acc: 0.5526
Epoch 7/50
WARNING:tensorflow:Early stopping conditioned on metric `val_accuracy` which is not available. Available metrics are: loss,acc,val_loss,val_acc
15/16 [===========================>..] - ETA: 0s - loss: 0.6809 - acc: 0.5938
Epoch 7: val_acc did not improve from 0.57895
16/16 [==============================] - 1s 36ms/step - loss: 0.6805 - acc: 0.5936 - val_loss: 0.6796 - val_acc: 0.5263
WARNING:tensorflow:Early stopping conditioned on metric `val_accuracy` which is not available. Available metrics are: loss,acc,val_loss,val_acc
Epoch 8/50
15/16 [===========================>..] - ETA: 0s - loss: 0.6806 - acc: 0.5875
Epoch 8: val_acc improved from 0.57895 to 0.63158, saving model to models_weights.h5
16/16 [==============================] - 1s 81ms/step - loss: 0.6796 - acc: 0.5936 - val_loss: 0.6793 - val_acc: 0.6316
Epoch 9/50
WARNING:tensorflow:Early stopping conditioned on metric `val_accuracy` which is not available. Available metrics are: loss,acc,val_loss,val_acc
15/16 [===========================>..] - ETA: 0s - loss: 0.6769 - acc: 0.5896
Epoch 9: val_acc improved from 0.63158 to 0.67105, saving model to models_weights.h5
WARNING:tensorflow:Early stopping conditioned on metric `val_accuracy` which is not available. Available metrics are: loss,acc,val_loss,val_acc
16/16 [==============================] - 1s 70ms/step - loss: 0.6770 - acc: 0.5876 - val_loss: 0.6689 - val_acc: 0.6711
Epoch 10/50
15/16 [===========================>..] - ETA: 0s - loss: 0.6765 - acc: 0.6021
Epoch 10: val_acc did not improve from 0.67105
16/16 [==============================] - 1s 37ms/step - loss: 0.6770 - acc: 0.5936 - val_loss: 0.6742 - val_acc: 0.5263
Epoch 11/50
WARNING:tensorflow:Early stopping conditioned on metric `val_accuracy` which is not available. Available metrics are: loss,acc,val_loss,val_acc
15/16 [===========================>..] - ETA: 0s - loss: 0.6733 - acc: 0.6187
Epoch 11: val_acc did not improve from 0.67105
16/16 [==============================] - 1s 37ms/step - loss: 0.6732 - acc: 0.6195 - val_loss: 0.6680 - val_acc: 0.5526
Epoch 12/50
WARNING:tensorflow:Early stopping conditioned on metric `val_accuracy` which is not available. Available metrics are: loss,acc,val_loss,val_acc
15/16 [===========================>..] - ETA: 0s - loss: 0.6725 - acc: 0.6021
Epoch 12: val_acc did not improve from 0.67105
16/16 [==============================] - 1s 37ms/step - loss: 0.6724 - acc: 0.5996 - val_loss: 0.6645 - val_acc: 0.5526
Epoch 13/50
WARNING:tensorflow:Early stopping conditioned on metric `val_accuracy` which is not available. Available metrics are: loss,acc,val_loss,val_acc
15/16 [===========================>..] - ETA: 0s - loss: 0.6711 - acc: 0.6625
Epoch 13: val_acc did not improve from 0.67105
16/16 [==============================] - 1s 37ms/step - loss: 0.6696 - acc: 0.6673 - val_loss: 0.6623 - val_acc: 0.6447
Epoch 14/50
WARNING:tensorflow:Early stopping conditioned on metric `val_accuracy` which is not available. Available metrics are: loss,acc,val_loss,val_acc
15/16 [===========================>..] - ETA: 0s - loss: 0.6660 - acc: 0.6375
WARNING:tensorflow:Early stopping conditioned on metric `val_accuracy` which is not available. Available metrics are: loss,acc,val_loss,val_acc
Epoch 14: val_acc did not improve from 0.67105
16/16 [==============================] - 1s 37ms/step - loss: 0.6661 - acc: 0.6335 - val_loss: 0.6625 - val_acc: 0.6579
Epoch 15/50
15/16 [===========================>..] - ETA: 0s - loss: 0.6662 - acc: 0.6417
Epoch 15: val_acc improved from 0.67105 to 0.69737, saving model to models_weights.h5
16/16 [==============================] - 1s 88ms/step - loss: 0.6662 - acc: 0.6474 - val_loss: 0.6591 - val_acc: 0.6974
Epoch 16/50
WARNING:tensorflow:Early stopping conditioned on metric `val_accuracy` which is not available. Available metrics are: loss,acc,val_loss,val_acc
15/16 [===========================>..] - ETA: 0s - loss: 0.6623 - acc: 0.7229
Epoch 16: val_acc did not improve from 0.69737
16/16 [==============================] - 1s 39ms/step - loss: 0.6631 - acc: 0.7131 - val_loss: 0.6582 - val_acc: 0.6711
Epoch 17/50
WARNING:tensorflow:Early stopping conditioned on metric `val_accuracy` which is not available. Available metrics are: loss,acc,val_loss,val_acc
15/16 [===========================>..] - ETA: 0s - loss: 0.6627 - acc: 0.6708
WARNING:tensorflow:Early stopping conditioned on metric `val_accuracy` which is not available. Available metrics are: loss,acc,val_loss,val_acc
Epoch 17: val_acc did not improve from 0.69737
16/16 [==============================] - 1s 37ms/step - loss: 0.6628 - acc: 0.6653 - val_loss: 0.6582 - val_acc: 0.6447
Epoch 18/50
15/16 [===========================>..] - ETA: 0s - loss: 0.6610 - acc: 0.6521
Epoch 18: val_acc did not improve from 0.69737
16/16 [==============================] - 1s 36ms/step - loss: 0.6615 - acc: 0.6514 - val_loss: 0.6564 - val_acc: 0.6711
Epoch 19/50
WARNING:tensorflow:Early stopping conditioned on metric `val_accuracy` which is not available. Available metrics are: loss,acc,val_loss,val_acc
15/16 [===========================>..] - ETA: 0s - loss: 0.6608 - acc: 0.6917
Epoch 19: val_acc did not improve from 0.69737
16/16 [==============================] - 1s 36ms/step - loss: 0.6611 - acc: 0.6932 - val_loss: 0.6564 - val_acc: 0.6842
Epoch 20/50
WARNING:tensorflow:Early stopping conditioned on metric `val_accuracy` which is not available. Available metrics are: loss,acc,val_loss,val_acc
15/16 [===========================>..] - ETA: 0s - loss: 0.6606 - acc: 0.6562
Epoch 20: val_acc did not improve from 0.69737
16/16 [==============================] - 1s 36ms/step - loss: 0.6601 - acc: 0.6554 - val_loss: 0.6553 - val_acc: 0.6711
Epoch 21/50
WARNING:tensorflow:Early stopping conditioned on metric `val_accuracy` which is not available. Available metrics are: loss,acc,val_loss,val_acc
15/16 [===========================>..] - ETA: 0s - loss: 0.6600 - acc: 0.6667
Epoch 21: val_acc did not improve from 0.69737
16/16 [==============================] - 1s 36ms/step - loss: 0.6597 - acc: 0.6713 - val_loss: 0.6548 - val_acc: 0.6842
Epoch 22/50
WARNING:tensorflow:Early stopping conditioned on metric `val_accuracy` which is not available. Available metrics are: loss,acc,val_loss,val_acc
15/16 [===========================>..] - ETA: 0s - loss: 0.6586 - acc: 0.6896
Epoch 22: val_acc did not improve from 0.69737
16/16 [==============================] - 1s 36ms/step - loss: 0.6591 - acc: 0.6873 - val_loss: 0.6544 - val_acc: 0.6711
Epoch 23/50
WARNING:tensorflow:Early stopping conditioned on metric `val_accuracy` which is not available. Available metrics are: loss,acc,val_loss,val_acc
15/16 [===========================>..] - ETA: 0s - loss: 0.6592 - acc: 0.6771
Epoch 23: val_acc did not improve from 0.69737
16/16 [==============================] - 1s 37ms/step - loss: 0.6582 - acc: 0.6833 - val_loss: 0.6541 - val_acc: 0.6842
Epoch 24/50
WARNING:tensorflow:Early stopping conditioned on metric `val_accuracy` which is not available. Available metrics are: loss,acc,val_loss,val_acc
15/16 [===========================>..] - ETA: 0s - loss: 0.6586 - acc: 0.6938
Epoch 24: val_acc did not improve from 0.69737
16/16 [==============================] - 1s 36ms/step - loss: 0.6582 - acc: 0.6972 - val_loss: 0.6539 - val_acc: 0.6842
Epoch 25/50
WARNING:tensorflow:Early stopping conditioned on metric `val_accuracy` which is not available. Available metrics are: loss,acc,val_loss,val_acc
15/16 [===========================>..] - ETA: 0s - loss: 0.6589 - acc: 0.6875
WARNING:tensorflow:Early stopping conditioned on metric `val_accuracy` which is not available. Available metrics are: loss,acc,val_loss,val_acc
Epoch 25: val_acc did not improve from 0.69737
16/16 [==============================] - 1s 37ms/step - loss: 0.6579 - acc: 0.6892 - val_loss: 0.6537 - val_acc: 0.6842
Epoch 26/50
15/16 [===========================>..] - ETA: 0s - loss: 0.6578 - acc: 0.6854
WARNING:tensorflow:Early stopping conditioned on metric `val_accuracy` which is not available. Available metrics are: loss,acc,val_loss,val_acc
Epoch 26: val_acc did not improve from 0.69737
16/16 [==============================] - 1s 36ms/step - loss: 0.6576 - acc: 0.6833 - val_loss: 0.6535 - val_acc: 0.6842
Epoch 27/50
15/16 [===========================>..] - ETA: 0s - loss: 0.6564 - acc: 0.7000
Epoch 27: val_acc did not improve from 0.69737
16/16 [==============================] - 1s 36ms/step - loss: 0.6573 - acc: 0.6952 - val_loss: 0.6534 - val_acc: 0.6711
Epoch 28/50
WARNING:tensorflow:Early stopping conditioned on metric `val_accuracy` which is not available. Available metrics are: loss,acc,val_loss,val_acc
15/16 [===========================>..] - ETA: 0s - loss: 0.6567 - acc: 0.6771
WARNING:tensorflow:Early stopping conditioned on metric `val_accuracy` which is not available. Available metrics are: loss,acc,val_loss,val_acc
Epoch 28: val_acc did not improve from 0.69737
16/16 [==============================] - 1s 36ms/step - loss: 0.6570 - acc: 0.6753 - val_loss: 0.6533 - val_acc: 0.6711
Epoch 29/50
15/16 [===========================>..] - ETA: 0s - loss: 0.6560 - acc: 0.6917
WARNING:tensorflow:Early stopping conditioned on metric `val_accuracy` which is not available. Available metrics are: loss,acc,val_loss,val_acc
Epoch 29: val_acc did not improve from 0.69737
16/16 [==============================] - 1s 36ms/step - loss: 0.6567 - acc: 0.6813 - val_loss: 0.6531 - val_acc: 0.6711
Epoch 30/50
15/16 [===========================>..] - ETA: 0s - loss: 0.6561 - acc: 0.6792
WARNING:tensorflow:Early stopping conditioned on metric `val_accuracy` which is not available. Available metrics are: loss,acc,val_loss,val_acc
Epoch 30: val_acc did not improve from 0.69737
16/16 [==============================] - 1s 36ms/step - loss: 0.6566 - acc: 0.6753 - val_loss: 0.6530 - val_acc: 0.6711
Epoch 31/50
15/16 [===========================>..] - ETA: 0s - loss: 0.6566 - acc: 0.6875
WARNING:tensorflow:Early stopping conditioned on metric `val_accuracy` which is not available. Available metrics are: loss,acc,val_loss,val_acc
Epoch 31: val_acc did not improve from 0.69737
16/16 [==============================] - 1s 37ms/step - loss: 0.6566 - acc: 0.6833 - val_loss: 0.6529 - val_acc: 0.6711
Epoch 32/50
15/16 [===========================>..] - ETA: 0s - loss: 0.6557 - acc: 0.6854
Epoch 32: val_acc did not improve from 0.69737
16/16 [==============================] - 1s 36ms/step - loss: 0.6565 - acc: 0.6793 - val_loss: 0.6527 - val_acc: 0.6842
Epoch 33/50
WARNING:tensorflow:Early stopping conditioned on metric `val_accuracy` which is not available. Available metrics are: loss,acc,val_loss,val_acc
15/16 [===========================>..] - ETA: 0s - loss: 0.6557 - acc: 0.6833
WARNING:tensorflow:Early stopping conditioned on metric `val_accuracy` which is not available. Available metrics are: loss,acc,val_loss,val_acc
Epoch 33: val_acc did not improve from 0.69737
16/16 [==============================] - 1s 36ms/step - loss: 0.6563 - acc: 0.6833 - val_loss: 0.6527 - val_acc: 0.6842
Epoch 34/50
15/16 [===========================>..] - ETA: 0s - loss: 0.6561 - acc: 0.6771
WARNING:tensorflow:Early stopping conditioned on metric `val_accuracy` which is not available. Available metrics are: loss,acc,val_loss,val_acc
Epoch 34: val_acc did not improve from 0.69737
16/16 [==============================] - 1s 36ms/step - loss: 0.6563 - acc: 0.6813 - val_loss: 0.6526 - val_acc: 0.6842
Epoch 35/50
15/16 [===========================>..] - ETA: 0s - loss: 0.6578 - acc: 0.6771
Epoch 35: val_acc did not improve from 0.69737
16/16 [==============================] - 1s 36ms/step - loss: 0.6562 - acc: 0.6813 - val_loss: 0.6526 - val_acc: 0.6842
Epoch 36/50
WARNING:tensorflow:Early stopping conditioned on metric `val_accuracy` which is not available. Available metrics are: loss,acc,val_loss,val_acc
15/16 [===========================>..] - ETA: 0s - loss: 0.6567 - acc: 0.6750
Epoch 36: val_acc did not improve from 0.69737
16/16 [==============================] - 1s 36ms/step - loss: 0.6561 - acc: 0.6793 - val_loss: 0.6525 - val_acc: 0.6842
Epoch 37/50
WARNING:tensorflow:Early stopping conditioned on metric `val_accuracy` which is not available. Available metrics are: loss,acc,val_loss,val_acc
15/16 [===========================>..] - ETA: 0s - loss: 0.6555 - acc: 0.6771
WARNING:tensorflow:Early stopping conditioned on metric `val_accuracy` which is not available. Available metrics are: loss,acc,val_loss,val_acc
Epoch 37: val_acc did not improve from 0.69737
16/16 [==============================] - 1s 36ms/step - loss: 0.6560 - acc: 0.6793 - val_loss: 0.6525 - val_acc: 0.6842
Epoch 38/50
15/16 [===========================>..] - ETA: 0s - loss: 0.6561 - acc: 0.6833
Epoch 38: val_acc did not improve from 0.69737
16/16 [==============================] - 1s 36ms/step - loss: 0.6560 - acc: 0.6833 - val_loss: 0.6524 - val_acc: 0.6842
Epoch 39/50
WARNING:tensorflow:Early stopping conditioned on metric `val_accuracy` which is not available. Available metrics are: loss,acc,val_loss,val_acc
15/16 [===========================>..] - ETA: 0s - loss: 0.6560 - acc: 0.6854
Epoch 39: val_acc did not improve from 0.69737
16/16 [==============================] - 1s 36ms/step - loss: 0.6560 - acc: 0.6833 - val_loss: 0.6524 - val_acc: 0.6842
Epoch 40/50
WARNING:tensorflow:Early stopping conditioned on metric `val_accuracy` which is not available. Available metrics are: loss,acc,val_loss,val_acc
15/16 [===========================>..] - ETA: 0s - loss: 0.6561 - acc: 0.6771
WARNING:tensorflow:Early stopping conditioned on metric `val_accuracy` which is not available. Available metrics are: loss,acc,val_loss,val_acc
Epoch 40: val_acc did not improve from 0.69737
16/16 [==============================] - 1s 37ms/step - loss: 0.6559 - acc: 0.6793 - val_loss: 0.6524 - val_acc: 0.6842
Epoch 41/50
15/16 [===========================>..] - ETA: 0s - loss: 0.6557 - acc: 0.6792
Epoch 41: val_acc did not improve from 0.69737
16/16 [==============================] - 1s 37ms/step - loss: 0.6559 - acc: 0.6793 - val_loss: 0.6523 - val_acc: 0.6842
Epoch 42/50
WARNING:tensorflow:Early stopping conditioned on metric `val_accuracy` which is not available. Available metrics are: loss,acc,val_loss,val_acc
15/16 [===========================>..] - ETA: 0s - loss: 0.6559 - acc: 0.6833
Epoch 42: val_acc did not improve from 0.69737
16/16 [==============================] - 1s 36ms/step - loss: 0.6559 - acc: 0.6833 - val_loss: 0.6523 - val_acc: 0.6842
Epoch 43/50
WARNING:tensorflow:Early stopping conditioned on metric `val_accuracy` which is not available. Available metrics are: loss,acc,val_loss,val_acc
15/16 [===========================>..] - ETA: 0s - loss: 0.6564 - acc: 0.6792
WARNING:tensorflow:Early stopping conditioned on metric `val_accuracy` which is not available. Available metrics are: loss,acc,val_loss,val_acc
Epoch 43: val_acc did not improve from 0.69737
16/16 [==============================] - 1s 36ms/step - loss: 0.6559 - acc: 0.6813 - val_loss: 0.6523 - val_acc: 0.6842
Epoch 44/50
15/16 [===========================>..] - ETA: 0s - loss: 0.6557 - acc: 0.6833
WARNING:tensorflow:Early stopping conditioned on metric `val_accuracy` which is not available. Available metrics are: loss,acc,val_loss,val_acc
Epoch 44: val_acc did not improve from 0.69737
16/16 [==============================] - 1s 36ms/step - loss: 0.6558 - acc: 0.6813 - val_loss: 0.6523 - val_acc: 0.6842
Epoch 45/50
15/16 [===========================>..] - ETA: 0s - loss: 0.6555 - acc: 0.6792
WARNING:tensorflow:Early stopping conditioned on metric `val_accuracy` which is not available. Available metrics are: loss,acc,val_loss,val_acc
Epoch 45: val_acc did not improve from 0.69737
16/16 [==============================] - 1s 36ms/step - loss: 0.6558 - acc: 0.6793 - val_loss: 0.6523 - val_acc: 0.6842
Epoch 46/50
15/16 [===========================>..] - ETA: 0s - loss: 0.6568 - acc: 0.6792
WARNING:tensorflow:Early stopping conditioned on metric `val_accuracy` which is not available. Available metrics are: loss,acc,val_loss,val_acc
Epoch 46: val_acc did not improve from 0.69737
16/16 [==============================] - 1s 36ms/step - loss: 0.6558 - acc: 0.6833 - val_loss: 0.6523 - val_acc: 0.6842
Epoch 47/50
15/16 [===========================>..] - ETA: 0s - loss: 0.6556 - acc: 0.6854
WARNING:tensorflow:Early stopping conditioned on metric `val_accuracy` which is not available. Available metrics are: loss,acc,val_loss,val_acc
Epoch 47: val_acc did not improve from 0.69737
16/16 [==============================] - 1s 36ms/step - loss: 0.6558 - acc: 0.6793 - val_loss: 0.6523 - val_acc: 0.6842
Epoch 48/50
15/16 [===========================>..] - ETA: 0s - loss: 0.6560 - acc: 0.6812
Epoch 48: val_acc did not improve from 0.69737
16/16 [==============================] - 1s 36ms/step - loss: 0.6558 - acc: 0.6813 - val_loss: 0.6523 - val_acc: 0.6842
Epoch 49/50
WARNING:tensorflow:Early stopping conditioned on metric `val_accuracy` which is not available. Available metrics are: loss,acc,val_loss,val_acc
15/16 [===========================>..] - ETA: 0s - loss: 0.6559 - acc: 0.6771
WARNING:tensorflow:Early stopping conditioned on metric `val_accuracy` which is not available. Available metrics are: loss,acc,val_loss,val_acc
Epoch 49: val_acc did not improve from 0.69737
16/16 [==============================] - 1s 36ms/step - loss: 0.6558 - acc: 0.6813 - val_loss: 0.6523 - val_acc: 0.6842
Epoch 50/50
15/16 [===========================>..] - ETA: 0s - loss: 0.6558 - acc: 0.6812
WARNING:tensorflow:Early stopping conditioned on metric `val_accuracy` which is not available. Available metrics are: loss,acc,val_loss,val_acc
Epoch 50: val_acc did not improve from 0.69737
16/16 [==============================] - 1s 36ms/step - loss: 0.6558 - acc: 0.6813 - val_loss: 0.6523 - val_acc: 0.6842
3/3 [==============================] - 0s 13ms/step - loss: 0.6523 - acc: 0.6842
[0.6522825360298157, 0.6842105388641357]

七、绘制损失函数图像和准确度图像

绘制代码与前几周相同

# 画准确度图
acc = history.history['acc']
val_acc = history.history['val_acc']
loss = history.history['loss']
val_loss = history.history['val_loss']
epochs_range = range(50)
plt.figure(figsize=(12, 4))
plt.subplot(1, 2, 1)
plt.plot(epochs_range, acc, label='Training Accuracy')
plt.plot(epochs_range, val_acc, label='Validation Accuracy')
plt.legend(loc='lower right')
plt.title('Training and Validation Accuracy')
plt.subplot(1, 2, 2)
plt.plot(epochs_range, loss, label='Training Loss')
plt.plot(epochs_range, val_loss, label='Validation Loss')
plt.legend(loc='upper right')
plt.title('Training and Validation Loss')
plt.show()

在这里插入图片描述

以上就是我本周的学习内容
在这里插入图片描述

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

降花绘

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值