-
Notifications
You must be signed in to change notification settings - Fork 2
Open
Description
我使用batchsize =1 / batchsize = 2,单卡或多卡数据并行的条件下,只要在验证时使用eval(),精度就会极低,即使是使用训练数据,精度也不足5%,但是不使用eval()精度能有80%以上。
我同样尝试了将例如conv1_c和conv1_n复用的BN层改为不复用(因为我以为这两者的数值分布会差很多,通过同个BN层会有影响),结果仍然只能在评估模式下取得极低的精度。
我检查了这个过程中张量在通过BN层前后的变化,是否使用eval()的两种情况下张量的分布产生了很大的变化,最大最小值差距2到10倍不等,似乎是BN层保留下来的running_mean和running_var完全不适用于单个验证数据。
找不到原因,也许是batchsize太小了?但是这个模型占用显存太多了,现在比较菜搞不定DDP
Metadata
Metadata
Assignees
Labels
No labels