Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python TensorFlow API Slim:如何为VGG Net 16设置检查点排除范围和输出节点名称?_Python_Tensorflow_Classification_Conv Neural Network_Vgg Net - Fatal编程技术网

Python TensorFlow API Slim:如何为VGG Net 16设置检查点排除范围和输出节点名称?

Python TensorFlow API Slim:如何为VGG Net 16设置检查点排除范围和输出节点名称?,python,tensorflow,classification,conv-neural-network,vgg-net,Python,Tensorflow,Classification,Conv Neural Network,Vgg Net,我目前正在尝试使用TensorFlow API()来训练分类网络。为我的数据集(存储在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 \ --da

我目前正在尝试使用TensorFlow API()来训练分类网络。为我的数据集(存储在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 \
这适用于几种分类网络(Inception、ResNet、MobileNet),但不适用于VGG网络。我对VGG Net 16的以下模型进行了微调:

一般来说,训练这个模型是可行的,但是当我训练网络时,损耗增加而不是减少。可能是因为我选择了“检查点排除范围”

使用最后一个完全连接的层作为检查点\u排除\u范围是否正确

冻结参数“output\u node\u names”的图形也会出现同样的问题。例如,对于InceptionV3,它与“输出节点名称=InceptionV3/预测/重塑1”一起工作。但是如何为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网络模型中,我没有发现任何包含“预测”或“Logits”的层,所以我不确定


谢谢你的帮助

我尝试在脚本中运行train_image_classifier.py,但做了一些更改,如下所述:

  • 将列车路径、数据集路径和检查点路径更改为我的本地路径
  • 因为我在CPU上运行,所以在命令中添加了
    --clone\u on\u CPU=True
    参数
  • 删除了参数
    dataset\u name=my\u dataset
    ,因为它为我抛出了错误
  • 它运行良好。损失开始时高达448,然后缓慢减少,到第1000步结束时,减少到3.5。它确实波动很大,但损失趋势是下降的。不确定为什么在尝试跑步时看不到相同的内容


    关于您在训练时检查点排除范围以及在冻结图形时输出节点名称的问题,我认为您选择的层是绝对正确的。但是,我更愿意只训练最后一个完全连接的层(fc8)以加快收敛速度。

    它对MobileNet有效吗?如果有效,在可训练范围、检查点排除范围中传递了哪些值,以及在检查点路径(即)中使用了哪个检查点文件新数据集的检查点文件还是Mobilenet的默认检查点文件?请您指导一下,为什么不为您有问题的型号(VGG16)提供脚本,而不是InceptionV3?@Anju Paul-英特尔:我刚刚更新了帖子,给出了我用于VGG16的脚本命令。@Dinesh:是的,它适用于MobileNet。这里是我用于MobileNet v1的参数--trainable_scopes=MobileNet v1/Logits--checkpoint_exclude_scopes=MobileNet v1/Logits--checkpoint_path=MobileNet_v1_1.0_224/MobileNet_v1_1.0_224;.ckpt_,为了冻结图形,我使用了--output_node_names=MobileNet v1/Predictions/重塑_1感谢您的回答和帮助。原则上,您和我做的一样,只是使用了另一个数据集。很高兴现在,它为您工作。使用这些参数。然后,我将进一步研究数据集-可能我当前的数据集对于VGG Net来说太小了。