sirius-ai / MobileFaceNet_TF

Tensorflow implementation for MobileFaceNet
Apache License 2.0
432 stars 170 forks source link

作者您好,我的total_loss一直在15~40之间跳,reg_loss倒是一直降低,但降低到0.04的时候就停止了 #48

Closed frankqianghe closed 5 years ago

frankqianghe commented 5 years ago

作者您好,total_loss是不是没有参考价值,我的跑了4个epoch,在tensorboard中观察,total_loss总是从15慢慢上升到40,又慢慢降低到15,然后又上升到40,反复这样。请问这样是正常的吗?另外能否贴一下您的训练log,我想看一下您的total_loss。

这个跟我之前跑pytorch的情况不太一样,同一份数据集,学习率和优化器都是一样的0.1的起始值,adam的优化器。pytroch的arcface损失值,是从30多一直降低到0.几。

注:我的训练数据集是CASIA,里面是10575个分类,393698张照片,都是112x112已经做了人脸对齐。

sirius-ai commented 5 years ago

你这种情况肯定是不正常的,请问你是否有对数据集做shuffle?你可以贴一下你的训练log出来看看,loss到底是在什么时候开始升什么时候开始降的。

frankqianghe commented 5 years ago

做了,shuffle buffer我设置的5000,然后batchsize我设置32。 我怀疑是数据集的问题,我正在下您的ms1m的数据集,一会儿再试试,如果还是不行我把tensorboard截图还有训练log贴出来给您看一下,感谢回复

sirius-ai commented 5 years ago

数据集的问题可能性比较大,pytorch和tensorflow加载数据集的方式不一样,在生成tfrecord时,需要实现进行shuffle,之前我也有遇到在epoch迭代时出现loss跳变的问题,你可以参考#7,此外,你需要确保数据已经清洗干净并且训练参数--class_number设定正确!

frankqianghe commented 5 years ago

@sirius-ai 您好,感谢您的回复,我用您代码里ms1m的训练数据重新跑了一次,训练正常了。我看了一下,好像ms1m在生成tfrecord的时候数据就已经被随机排序了。所以我估计就是随机问题。我准备再用我昨天出问题的数据,随机生成一次tfrecord。有结果后我来反馈。再次感谢您

frankqianghe commented 5 years ago

@sirius-ai 您好,我用我之前数据做了测试了。我把数据在生成tfrecord之前就打乱了。能正常训练。非常感谢您的回复。

1374207430 commented 5 years ago

您好。您在训练时设置batch size为32,显存为多少才能满足要求呢?

sirius-ai commented 5 years ago

还要看输入大小的,我一般是用gtx 1080ti进行训练。