在微调Tensorflow Inception_V3模型时,如何消除图中添加的额外操作?

在微调Tensorflow Inception_V3模型时,如何消除图中添加的额外操作?,tensorflow,tensorflow-slim,Tensorflow,Tensorflow Slim,我正在尝试将一个经过微调的tensorflow inception_v3模型转换为uff格式,该格式可以在NVIDIA的Jetson TX2上运行。对于转换为uff,支持某些操作,但不支持某些操作。我能够使用tensorflow提供的imagenet检查点成功地冻结并转换为uff inception_v3模型。但是,如果我对模型进行微调,新图形中会添加额外的操作,如Floor、RandomUniform等,这些操作还不受支持。即使在冻结模型后,这些层仍会保留。这也发生在tensorflow网站上

我正在尝试将一个经过微调的tensorflow inception_v3模型转换为uff格式,该格式可以在NVIDIA的Jetson TX2上运行。对于转换为uff,支持某些操作,但不支持某些操作。我能够使用tensorflow提供的imagenet检查点成功地冻结并转换为uff inception_v3模型。但是,如果我对模型进行微调,新图形中会添加额外的操作,如Floor、RandomUniform等,这些操作还不受支持。即使在冻结模型后,这些层仍会保留。这也发生在tensorflow网站上提供的flowers样本的微调中

  • 我想了解为什么在图中添加了额外的操作,而微调只是为了修改最后一层以匹配所需的输出数量
  • 如果它们是在训练时添加的,我如何才能消除它们?在发布imagenet的inception_v3模型之前,tensorflow团队遵循了哪些后处理步骤
  • 如果需要,我可以共享pbtxt文件。目前,模型层详细信息上传到。我正在使用Tensorflow 1.6和GPU

    我正在按照以下步骤冻结或微调模型:。如上述链接所述,要重现问题,请安装TF Slim image models library并执行以下步骤:

    1. python export_inference_graph.py \
      --alsologtostderr \
      --model_name=inception_v3 \
      --output_file=/tmp/inception_v3_inf_graph.pb
    
    2. python freeze_graph.py \
      --input_graph=/tmp/inception_v3_inf_graph.pb \
      --input_checkpoint=/tmp/checkpoints/inception_v3.ckpt \
      --input_binary=true --output_graph=/tmp/frozen_inception_v3.pb \
      --output_node_names=InceptionV3/Predictions/Reshape_1
    
    3. DATASET_DIR=/tmp/flowers
       TRAIN_DIR=/tmp/flowers-models/inception_v3
       CHECKPOINT_PATH=/tmp/my_checkpoints/inception_v3.ckpt
       python train_image_classifier.py --train_dir=$TRAIN_DIR --dataset_dir=$DATASET_DIR --dataset_name=flowers --dataset_split_name=train --model_name=inception_v3 --checkpoint_path=${CHECKPOINT_PATH} --checkpoint_exclude_scopes=InceptionV3/Logits,InceptionV3/AuxLogits --trainable_scopes=InceptionV3/Logits,InceptionV3/AuxLogits
    
    4. python freeze_graph.py \
      --input_graph=/tmp/graph.pbtxt \
      --input_checkpoint=/tmp/checkpoints/model.ckpt-2539 \
      --input_binary=false --output_graph=/tmp/frozen_inception_v3_flowers.pb \
      --output_node_names=InceptionV3/Predictions/Reshape_1
    

    要检查图层,您可以签出.pbtxt文件或使用NVIDIA的转换为uff实用程序。

    运行培训脚本->导出推理图->冻结图。这样就消除了所有额外的节点,并且模型可以很容易地转换为uff