【发布时间】:2017-04-30 19:55:37
【问题描述】:
我正在使用 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)
我还尝试了 Tesla K80 GPU,经过 20 小时的训练,这就是损失的样子。所有参数都相同。令人担忧的部分是 - 使用 GPU 并没有增加迭代率,这意味着每个步骤在 32 cpu 和 50 threds 或 tesla K80 中都需要相同的时间。
我在这里绝对需要一些实用的建议。
【问题讨论】:
-
您的问题由两部分组成。收敛不好与参数和输入处理有关,也许您需要尝试不同的权重衰减和学习率衰减,或者也尝试不同的损失优化。关于您的系统内存不足,那么只需减小批处理大小,不要立即将所有数据加载到内存中,而是在它们之间进行交换。
-
为了能够帮助您更多地与我们分享您的参数和超参数。
标签: machine-learning computer-vision tensorflow deep-learning