On Wednesday, 20 April 2016 at 04:31:33 UTC, Relja Ljubobratovic
wrote:
I'm interested in contributing towards parts that involve
machine learning/numerical optimisation. I have written some
of my own CV/ML programs with D in the past, but none of them
are particularly well engineered since they were all intended
for just my own use.
That's great, thanks Henry! As I've noted above, I think it
would be wise to keep modules like ML and optimization apart
from this library, and to integrate dcv with them through
ndslice. Maybe it's more likely that you could contribute to
DlangScience's SVM libray with those parts? But any of your
previous CV experience is more than welcome for DCV - I'll
contact you on the github so we could discuss this further,
hope that's ok.
I have an implementation of BFGS in D (except [open]BLAS :). BFGS
is an algorithm for unconstrained optimization of nonlinear
smooth functions. It is NOT L-BFGS and requires O(n*n) memory for
optimizing f: R^n -> R. The linesearch may be useful to implement
other algorithms.
It works fine for me, but needs some refactoring. Given existing
bindings for nlopt: would this be useful? If so, I start the
refactoring.
For now, there are no benchmarks, but it is definitely
faster/fewer iterations than optim(method="BFGS") in R and the
algorithm should be better than the version in GSL (if n is not
too large, GSL uses some kind of L-BFGS).