I created a learner for testing performance on new data.
I load there the weights of a training with very good accuracy on train and valid set - error rate of 0.027 on train and 0.0045 on valid)
When I run validate on the new data, I get an error rate of 3.098.
How can it even be more than 1?
I created 2 test sets (one for each class) to inspect the predictions. And on them, I see that the outputs of the network are excellent… so this error rate of 3 is very confusing. Can someone help?
It seems that you are mistaking about what the validate method returns.
When you call learn.validate(data.valid_dl), it will return 2 things:
The first value is the value of your loss
The second value is the value of your error rate on this particular data
As you have said, having an error rate > 1 has no sense, and in your particular case, it is 0.3611
Note: you can pass a metrics argument to the validate method (e.g: learn.validate(data.valid_dl, metrics=[accuracy])) and it will return the accuracy directly