我正在尝试在我的图像分类任务的自定义数据集上微调Mobilenet_v2_1.4_224模型。我正在关注本教程TensorFlow-Slim 图像分类库。我已经创建了 .tfrecord 训练和验证文件。当我尝试从现有检查点进行微调时,出现以下错误:
InvalidArgumentError(参见上面的回溯):分配需要两个张量的形状匹配。lhs shape= [1,1,24,144] rhs shape= [1,1,32,192] [[Node: save/Assign_149 = Assign[T=DT_FLOAT, _class=["loc:@MobilenetV2/expanded_conv_2/expand/weights"] , use_locking=true, validate_shape=true, _device="/job:localhost/replica:0/task:0/device:CPU:0"](MobilenetV2/expanded_conv_2/expand/weights, save/RestoreV2:149)]]
我使用的微调脚本是:
DATASET_DIR=G:\数据集
TRAIN_DIR=G:\Dataset\emotion-models\mobilenet_v2
CHECKPOINT_PATH=C:\Users\lenovo\Desktop\mobilenet_v2\mobilenet_v2_1.4_224.ckpt
python train_image_classifier.py \
--train_dir=${TRAIN_DIR} \
--dataset_dir=${DATASET_DIR} \
--dataset_name=emotion \
--dataset_split_name=train \
--model_name=mobilenet_v2 \
--train_image_size=224 \
--clone_on_cpu=True \
--checkpoint_path=${CHECKPOINT_PATH} \
--checkpoint_exclude_scopes=MobilenetV2/Logits \
--trainable_scopes=MobilenetV2/Logits
我怀疑错误是由于最后两个参数“checkpoint_exclude_scopes”或“trainable_scopes”造成的。
我知道这两个参数被用于迁移学习,方法是移除最后 2 层并创建我们自己的 softmax 层用于自定义数据集分类。但我不确定我是否为他们传递了正确的价值观。