This PR implements tensorflow 2 and in-place evaluation of trees, as detailed in #73.
Hiccup: two tests were failing:
test_model_kernel[m]: after fitting for 2 generations, the population is different. This suggests a random number generation issue.
test_cli[m-g-3-1000]: expression and id of winning tree are different, also smells like a random number issue.
However, the results for the other 42 tests are identical, including the multi-generation runs for 'classification', 'regression' and the other 'matching' tasks. This suggests it's something to do with the matching kernel specifically, perhaps related to the build_fittest_dict function. We'd planned on deprecating the matching kernel anyway, so this might not be important.
Anyway, I'll look into it more later (out of time for now) and try to understand the issue fully before committing.
This PR implements tensorflow 2 and in-place evaluation of trees, as detailed in #73.
Hiccup: two tests were failing:
test_model_kernel[m]
: after fitting for 2 generations, the population is different. This suggests a random number generation issue.test_cli[m-g-3-1000]
: expression and id of winning tree are different, also smells like a random number issue.However, the results for the other 42 tests are identical, including the multi-generation runs for 'classification', 'regression' and the other 'matching' tasks. This suggests it's something to do with the matching kernel specifically, perhaps related to the
build_fittest_dict
function. We'd planned on deprecating the matching kernel anyway, so this might not be important.Anyway, I'll look into it more later (out of time for now) and try to understand the issue fully before committing.