微调VGG最后一层非常慢

时间:2016-12-15 09:15:07

标签: machine-learning computer-vision tensorflow deep-learning

我使用tensorflow在32 cpu机器上微调VGG16网络。我使用稀疏的交叉熵损失。我必须将布料图像分为50个类别。经过2周的训练,这就是损失如何下降,我觉得收敛很慢。我的批量大小是50.这是正常的还是你认为这里出了什么问题?准确性也很糟糕。现在它因内存分配错误而崩溃。 terminate called after throwing an instance of 'std::bad_alloc' what(): std::bad_allo

我在日志文件中的最后一行看起来像这样 -

2016-12-13 08:56:57.162186: step 31525, loss = 232179.64 (1463843.280 sec/batch)

total loss

我也尝试过特斯拉K80 GPU,经过20小时的训练,这就是损失的样子。所有参数都相同。令人担忧的是 - 使用GPU并没有增加迭代率,这意味着每个步骤在32 cpu 50 threds或tesla K80中占用相同的时间。

我在这里肯定需要一些实用的建议。

total loss GPU enter image description here

1 个答案:

答案 0 :(得分:0)

另一个 - 而且效果更好 - 选择是不使用VGG16。如果你看一下Figure 5 in this paper,你会注意到VGG16在准确度和FLOP(每秒浮点运算)方面表现非常糟糕。如果您需要速度,Mobilenet或缩小尺寸的ResNet会做得更好。即使在初始阶段,v2的精确度也会比VGG的计算成本低得多。

这将大大减少您的训练时间内存使用。