实验内容

  1. 解决了昨日环境配置剩下的问题(三~六),接着昨日第 7 步继续

  2. 测试库中用例,检查是否能跑通

    1. 在”faster-rcnn.pytorch”文件夹中打开终端

    2. 指定 GPU 训练

      1. CUDA_VISIBLE_DEVICES=$GPU_ID python trainval_net.py \
      2. --dataset pascal_voc --net res101 \
      3. --bs $BATCH_SIZE --nw $WORKER_NUMBER \
      4. --lr $LEARNING_RATE --lr_decay_step $DECAY_STEP \
      5. --cuda
  1. - 参数意义:
  2. - `CUDA_VISIBLE_DEVICES=$GPU_ID`:指明所使用的 GPU ID`$GPU_ID`需修改为指定 ID
  3. - `--dataset pascal_voc --net res101`:在 pascal_voc 上使用 resnet101 进行训练
  4. - `--bs $BATCH_SIZE --nw $WORKER_NUMBER`:可以根据 GPU 内存大小来自适应地设置 BATCH_SIZE(批处理尺寸)和 WORKER_NUMBER。**在具有 12G 内存的 Titan Xp 上,它最多可以为 4**
  5. - `--lr $LEARNING_RATE --lr_decay_step $DECAY_STEP`:**学习率(Learning rate)**作为监督学习以及深度学习中重要的超参,其决定着目标函数能否收敛到局部最小值以及何时收敛到最小值。合适的学习率能够使目标函数在合适的时间内收敛到局部最小值。
  1. 多 GPU 训练(这一步实验没有做,“指定 GPU 实验”居然从下午三点多跑到了晚上 11 点多…)
    1. python trainval_net.py \ --dataset pascal_voc --net res101 \ --bs 24 --nw 8 \ --lr $LEARING_RATE --lr_decay_step $DECAY_STEP \ --cuda --mGPUs
    2. # (pascal_voc.py self._classes 类别修改)

问题

  • 问题一:RuntimeError: The expanded size of the tensor (2) must match the existing size (0) at non-singleton dimension 1

    • 解决:原因在于计算二分类交叉熵损失函数时是在每个 batch 中进行的,而总的图片数量并不能被所设置的 batch_size 整除,造成最后一个 batch 的图片数量与 batch_size 不相等。
  • 问题二:AttributeError: 'int' object has no attribute 'astype'

    • 解决:将/lib/roi_data_layer/roibatchLoader.py中第 52 行的target_ratio = 1改为target_ratio = np.array(1)
  • 问题三:AttributeError: 'Tensor' object has no attribute 'index'

    • 解决: 将 torch 的版本改为 0.4.0…所以昨天的错误到时出在哪个依赖上了???

瓦雀