使用slim框架对inception_v3做一个迁移训练

I0819 21:12:14.440093 140209868093248 evaluation.py:167] Evaluation [12/128]
I0819 21:12:16.967612 140209868093248 evaluation.py:167] Evaluation [24/128]
I0819 21:12:19.479909 140209868093248 evaluation.py:167] Evaluation [36/128]
I0819 21:12:22.123263 140209868093248 evaluation.py:167] Evaluation [48/128]
I0819 21:12:24.798159 140209868093248 evaluation.py:167] Evaluation [60/128]
I0819 21:12:27.488651 140209868093248 evaluation.py:167] Evaluation [72/128]
I0819 21:12:30.172214 140209868093248 evaluation.py:167] Evaluation [84/128]
I0819 21:12:32.817117 140209868093248 evaluation.py:167] Evaluation [96/128]
I0819 21:12:35.469249 140209868093248 evaluation.py:167] Evaluation [108/128]
I0819 21:12:38.160501 140209868093248 evaluation.py:167] Evaluation [120/128]
I0819 21:12:39.931193 140209868093248 evaluation.py:167] Evaluation [128/128]
eval/Recall_5[0.957519531]
eval/Accuracy[0.845214844]
I0819 21:12:40.325986 140209868093248 evaluation.py:275] Finished evaluation at 2019-08-19-21:12:40

以上为验证集部分log输出,准确率达到0.84,top5召回达到0.95

I0819 21:12:05.423418 140209868093248 saver.py:1280] Restoring parameters from ./train/model.ckpt-6865

使用了step-6865处的checkpoint

模型训练过程描述

数据准备

使用tf官网下slim框架自带的download_and_convert_data.py脚本对数据集处理,生成训练集和验证集的.tfrecord文件.,以及保存标签的label.txt文件,此处使用自己下载好的quiz数据集,因此对脚本文件做修改
from datasets import convert_quiz
......
#convert_quiz.py的修改
    elif FLAGS.dataset_name == 'quiz':
        convert_quiz.run(FLAGS.dataset_dir)

#脚本运行命令
python3 download_and_convert_data.py --dataset_dir=./train -- dataset_name=quiz
使用官网自带的train_image_classifier.py脚本对训练集进行训练
python3 train_image_classifier.py --dataset_name=quiz --dataset_dir=./train --checkpoint_path=./inception_v3.ckpt
 --model_name=inception_v3 --checkpoint_exclude_scopes=InceptionV3/Logits,InceptionV3/AuxLogits --train_dir=./train 
--learning_rate=0.001 --optimizer=rmsprop --batch_size=32
inception_v3.ckpt为tf官网提供的一个预训练checkpoint,为了匹配本训练集标签,除去原模型logits层和AuxLogits,学习率为0.001, 每个batch为32张图片。
同样使用官网自带的eval_image_classifier.py脚本文件对验证集验证
python3 eval_image_classifier.py --dataset_name=quiz --dataset_dir=./train --dataset_split_name=validation 
--model_name=inception_v3 --checkpoint_path=./train --eval_dir=./eval --batch_size=32 --max_num_batches=128
–dataset_dir为校验集路径,–model_name=inception_v3使用inception_v3作校验,检查点在之前训练网络时训练集所在文件夹下自动生成,–eval_dir=./eval 输出校验日志,32张图为一个batch,对128个batch做校验。

以上即为基于slim框架的整个训练过程,训练完后导出模型

sh export_and_freeze.sh
得到freezed.label和freeze.pd两个文件,分别用于存放标签和带有参数的计算图。

tensorboard解读

clone_loss:损失函数曲线:可见训练是有限的,损失一直在下降,在6865step的ckpt处下降至3左右,但并没有走平,继续训练可以进一步优化模型

使用slim框架对inception_v3做一个迁移训练_第1张图片

sparsity:计算图节点处权值的稀疏度,较好的稀疏度可以保证模型不会过拟合,也提高了模型的泛化能力。

使用slim框架对inception_v3做一个迁移训练_第2张图片

total_loss:加上正则损失后的总损失

使用slim框架对inception_v3做一个迁移训练_第3张图片

DISTRIBUTIONS:计算图每个节点处权重的分布

使用slim框架对inception_v3做一个迁移训练_第4张图片

histgram:每一层权重参数变化情况

使用slim框架对inception_v3做一个迁移训练_第5张图片

你可能感兴趣的:(经验之谈,学习笔记)