My 2 cents:

I wouldn't mind making all components that are non-deterministic in
nature having their constructor explicitly pass a RNG instance
(instead of using static magic).

That can be helpful when running several versions of the same
algorithms with different hyper-parameters in separate threads of the
same JVM on a multicore machine for instance. When you want to compare
the impact of hyper parameters values (e.g. a learning rate schedule
or a regularizer strength) you want to marginalize out the impact of
random init of the regular parameters (the initial weights of the beta
matrix in a logistic regression model). Same consideration holds for
// cross-validation in a single JVM.

If you think that having to pass RNG everywhere is too tedious I
wouldn't mind using a light IoC framework such as Guice but setting up
our own IoC such as the Bus feels like reinventing the wheel. Guice
does not see to be much more complicated to work with than Bus would
AFAIK and it's not invented here.

-- 
Olivier
http://twitter.com/ogrisel - http://code.oliviergrisel.name

Reply via email to