-
Notifications
You must be signed in to change notification settings - Fork 6.8k
RCNN training doesn't work with the latest master branch #5056
Comments
I think v0.9.3 works, c.f. https://github.com/precedenceguo/mxnet/tree/expr . Could you please try if this is ok? I will narrow it down later. edit: I noticed that you have gcc 4.9.2 on a Ubuntu 16.04 which isn't the default. So please try v0.9.3 to sync with me for less commits to check. |
It works well in mxnet0.9.3 and gcc version5.4.0 |
It's ok. |
@precedenceguo I have a question, why add the bbox_means and bbox_stds to bbox_pred_weight_test and bbox_pred_bias_test ? |
Maybe its this commit #4644 |
Cannot reproduce this with master f2c17afd76a92a4edd5f8b3429283b9f1986ba79. Update: Sorry this is the revision on mx-rcnn repo (master). MXNet would be 23fff3f. Also tested with mxnet/example/rcnn. They are virtually the same. |
@precedenceguo Can we add a few iterations of training to nightly tests? |
Also no problem with 0aeddf9. Now you may want to find out why yourself. git bisect start HEAD v0.9.3
# now build and test
# if good
git bisect good
# if bad
git bisect bad |
@piiswrong We could do that after a new io, packing a subset of PascalVOC to ImageRec. |
@lilhope add the bbox_means and bbox_stds to bbox_pred_weight_test and bbox_pred_bias_test so that we don't need to do them for every image in the test phase. Note that training phase do this normalization image by image. |
@precedenceguo where do this normalization in training phase? It seems I misunderstand something. |
Well then |
@precedenceguo Ok,Thanks a lot. |
@precedenceguo @piiswrong There is no problem with pure mxnet sources. I found that it's bug in dmlc-core. The problem arises since commit d7a89ea ("Platform independent real param parsing") in dmlc-core project. |
@piiswrong @sbodenstein The problem occur due to use std::stof and std::stod functions to parse floating-point numbers from string. The behaviour of these functions depends on the current language locale. My locale is russian and we use ',' instead '.' to separate integer and fractional parts. For example, std::stof parse string "3.1415" to float 3 in my locale. To avoid such problems it is necessary to use locale independent functions. |
is int('3.3') locale dependent in python? |
Python float() is locale-independent (PEP 331) |
looks like we can use this: http://en.cppreference.com/w/cpp/utility/from_chars @ksofiyuk Could you try a fix and make sure it works for russian? note that from_chars_result::ptr has to equal last to count as successful parsing. |
@piiswrong Ok, I will try to fix it and create PR to dmlc-core. |
@piiswrong from_chars is not good because it depends on C++17. |
I hate this... |
We can try to use sscanf but I'm not sure that it can parse INF and NaN correctly. |
worst case is we copy-paste a reference implementation of stod & stof and remove the locale part |
I tested sscanf. It works well, parse floats locale independent and read +inf, -inf, nan correctly. |
I think this is a solution:
Just need to know how slow it is. |
This issue is closed due to lack of activity in the last 90 days. Feel free to ping me to reopen if this is still an active issue. Thanks! |
RPNLogLoss(==0.693147) and RCNNLogLoss(==3.044522) don't change during training process.
It works fine with MXNet 0.9.1 (from https://github.com/precedenceguo/mxnet/tree/simple):
Environment info
Operating System:
Ubuntu 16.04
Compiler:
gcc 4.9.2
CUDA 8.0.44 + CuDNN v5.1
Package used (Python/R/Scala/Julia):
Python
MXNet commit hash (
git rev-parse HEAD
):0aeddf9
Python version and distribution:
Python 2.7.9
Steps to reproduce
or if you are running standard examples, please provide the commands you have run that lead to the error.
The text was updated successfully, but these errors were encountered: