Tensorflow对象检测(ssd-mobilnet_v1)不收敛

时间:2018-10-15 08:56:13

标签: python tensorflow object-detection-api

我正在尝试在tensorflow对象检测api上训练深层数据集。每个类别中的图像类别和对应数量如下。

{'Blouse': 24562, 'Cutoffs': 1669, 'Cardigan': 13311, 'Button-Down': 330, 'Poncho': 791, 'Chinos': 527, 'Top': 10078, 'Anorak': 160, 'Kimono': 2294, 'Blazer': 7497, 'Robe': 150, 'Parka': 676, 'Jodhpurs': 45, 'Sarong': 32, 'Shorts': 19624, 'Caftan': 54, 'Turtleneck': 146, 'Leggings': 5013, 'Jersey': 727, 'Hoodie': 4010, 'Culottes': 486, 'Sweater': 13123, 'Flannel': 324, 'Jeggings': 594, 'Tank': 15418, 'Onesie': 70, 'Coat': 2120, 'Sweatpants': 3021, 'Henley': 716, 'Jacket': 10425, 'Gauchos': 49, 'Sweatshorts': 1098, 'Romper': 7408, 'Joggers': 4405, 'Trunks': 386, 'Halter': 34, 'Dress': 144316, 'Jeans': 14152, 'Tee': 73333, 'Coverup': 34, 'Capris': 154, 'Kaftan': 252, 'Peacoat': 194, 'Bomber': 618, 'Skirt': 29546, 'Jumpsuit': 12306}

总共有46个课程。 我的总损失图似乎没有降低到更低的值。到目前为止,最好的水平是4。This是我的图表。 对于许多类来说这是正常的还是我应该使用其他算法?

我还有一个疑问,就是该模型已经训练了大约3天。我没有GPU。我应该停止培训过程吗?

编辑:

train_config: {
  batch_size: 24
  optimizer {
    rms_prop_optimizer: {
      learning_rate: {
        exponential_decay_learning_rate {
          initial_learning_rate: 0.004
          decay_steps: 800720
          decay_factor: 0.95
        }
      }
      momentum_optimizer_value: 0.9
      decay: 0.9
      epsilon: 1.0
    }
  }

硬件信息:

{
Architecture:        x86_64
CPU op-mode(s):      32-bit, 64-bit
Byte Order:          Little Endian
CPU(s):              6
On-line CPU(s) list: 0-5
Thread(s) per core:  1
Core(s) per socket:  2
Socket(s):           3
NUMA node(s):        1
Vendor ID:           GenuineIntel
CPU family:          6
Model:               63
Model name:          Intel(R) Xeon(R) CPU E5-2683 v3 @ 2.00GHz
Stepping:            2
CPU MHz:             1997.686
BogoMIPS:            3995.37
Hypervisor vendor:   VMware
Virtualization type: full
L1d cache:           32K
L1i cache:           32K
L2 cache:            256K
L3 cache:            35840K
NUMA node0 CPU(s):   0-5
Flags:               fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon nopl xtopology tsc_reliable nonstop_tsc pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm fsgsbase tsc_adjust bmi1 avx2 smep bmi2 invpcid xsaveopt arat
}

我是Tensorflow的新手。任何帮助将不胜感激。 预先感谢。

1 个答案:

答案 0 :(得分:1)

  1. 除非您给出正在使用的确切损失,否则总损失的值并不能提供足够的信息,并且除非您对此损失进行了实验,否则总损失的值并不具有指示性。相反,更具参考价值的是测试集上模型的性能指标。
  2. 除非您声明所使用的硬件,否则时间并不是很容易指示。相反,请注明迭代次数和批量大小,以及训练数据的大小或训练模型的时期数。
  3. 您使用的学习率下降了吗?如果您使用恒定的学习率:(1)具有较大的价值-那么收敛的可能性较小; (2)值较小-收敛可能需要很长时间。