Description
Hello all,
I have recently implemented the bounded version of the L-BFGS-B in (a local copy of) Tensorflow Probability.
It's not a blazing fast implementation (it is outright hacky in some places --- e.g., how it calculates M for different histories), and I had to reduce scope in order to manage (I assumed the inputs were float32
, and there was only one batching dimension; this fit my use case well). Despite this, L-BFGS-B is incredibly useful when employed in, e.g., periodic functions, and the code behaves correctly; it correctly converges for a high-dimensional quadratic surface as well as for a Rosenbrock surface (with a sufficiently large "box"), but converges to the same wrong minimum as the original Fortran implementation ((5., 5.)
) when considering the Rosenbrock function and bounds [(5, 20), (-10, 5)]
.
I'd like to contribute this implementation to TensorFlow Probability, but I've read the CONTRIBUTING.md
page (and related links) and am still at a lost. My main concerns are the following:
- Do I have to support arbitrary dtypes and arbitrary batching dimensions?
- Since I am not contributing a new module but would rather be putting the code into the
optimizer
module, how does this affect the recommendations?
It's also fairly difficult to grapple with all the information in CONTRIBUTING.md
without being familiar with TensorFlow's internals. Is it possible to request a code review so I have something to go off of?
Thanks in advance