我目前正在尝试使用TensorFlow API (https://github.com/tensorflow/models)来训练分类网络。在为我的数据集(存储在research/slim/ data中)创建TFrecords之后,我使用以下命令对网络进行培训:
python research/slim/train_image_classifier.py \
--train_dir=research/slim/training/current_model \
--dataset_name=my_dataset \
--dataset_split_name=train \
--dataset_dir=research/slim/data \
--model_name=vgg_16 \
--checkpoint_path=research/slim/training/vgg_16_2016_08_28/vgg_16.ckpt \
--checkpoint_exclude_scopes=vgg_16/fc7,vgg_16/fc8 \
--trainable_scopes=vgg_16/fc7,vgg_16/fc8 \
--batch_size=5 \
--log_every_n_steps=10 \
--max_number_of_steps=1000 \这对于几个分类网络(盗梦空间、ResNet、MobileNet)都很好,但对VGG却不是很好。我精调VGG-Net 16:28.tar.gz的跟随模型
一般来说,它可以训练这个模型,但是当我训练网络时,损失增加而不是减少。也许,这是因为我选择了‘检查点_排除_作用域’。
使用最后一个完全连接的层作为checkpoint_exclude_scopes是正确的吗?
对于参数“output_node_names”,冻结图形也会出现同样的问题。例如,对于'output_node_names=InceptionV3/Predictions/Reshape_1'.,它与InceptionV3一起工作但是如何为VGG设置这个参数。我尝试了以下几点:
python research/slim/freeze_graph.py
--input_graph=research/slim/training/current_model/graph.pb
--input_checkpoint=research/slim/training/current_model/model.ckpt
--input_binary=true
--output_graph=research/slim/training/current_model/frozen_inference_graph.pb
--output_node_names=vgg_16/fc8我没有在VGG模型中找到任何包含“预测”或“逻辑”的图层,所以我不确定。
谢谢你的帮助!
发布于 2019-04-17 10:40:16
我试图按照脚本中的方式运行train_image_classifier.py,并做了一些更改,如下所述:
--clone_on_cpu=True参数。dataset_name=my_dataset,因为它为我抛出了错误一切都很顺利。损失开始高达448,然后慢慢减少,到第1000步结束时减少到3.5。它确实有很大的波动,但损失的趋势是下降的。不知道为什么在尝试运行时看不到相同的内容。
关于你在训练checkpoint_exclude_scopes和冻结图形时output_node_names的问题,我认为你对层的选择是绝对好的。然而,为了更快的收敛,我宁愿只训练最后一个完全连接的层(Fc8)。
https://stackoverflow.com/questions/55125039
复制相似问题