Awesome
tfd: tensorflow for D
Installation
- If your project needs only TF C API bindings:
$ dub add tfd:deimos
- If your project needs entire tfd packages:
$ dub add tfd
see also Requirements
Example
Mir is to tfd what NumPy is to Tensorflow.
/// tensor add
import tfd;
import mir.ndslice : as, iota;
with (newGraph)
{
auto i = iota(2, 3, 4).as!float;
Operation x = placeholder!float("x", 2, 3, 4);
Operation two = constant(i);
Operation add = x + two;
Tensor addVal = session.run([add], [x: i.tensor])[0];
assert(addVal.sliced!(float, 3) == i * 2);
}
And more:
Features
- dpp generated C API bindings
- Support
@nogc nothrow
. - Setup CI
- Wrap tensor and session for basic usages (see
tfd.session
unittests). - mir.ndslice.Slice
s
<=> tfd.tensor.Tensort
integration bys.tensor
,t.slicedAs(s)
. - Example to save/load TF graphs.
- Use pbd to save/load proto files.
- Parse
ops.pbtxt
to generate typed ops bindings. - Rewrite C API example with typed bindings.
- Implement autograd, and simple training APIs in D.
- Support cloud TPU.
- Support dip1000.
Requirements
- libtensorflow. Currently, tfd only supports
- Linux CPU v1.15.0
- Linux GPU v1.15.0 (Not tested in CI)
- Windows CPU v1.15.0
Re-generate bindings
tfd uses dpp to generate bindings from TF C-API. You need libclang
to run dpp.
dub fetch dpp
dub run dpp -- --preprocess-only --include-path ./download/include <target dpp file>