adds the ability to use automatic mixed precision to gp.tensorflow.Train node
new flag for tf.Train node: auto_mixed_precision
3d convs are only properly supported with cudnn8.0
it works by rewriting the graph, the rewriting operation is called on the optimizer.
Therefore a new optimizer has to be created (the optimizer itself does not seem to be
a normal graph operation and thus cannot be recalled from a reloaded graph, only the
minimize operation, however, we need the optimizer itself)
A new optimizer is created, the type and parameters can be set with a new flag optimizer_args
(and should match the one used in mknet)
adds the option to use tf.data.Dataset instead of feed_dict to pass data to GPU
new node: TFData
new flag for tf.Train node: use_tf_data
when using this, there are some restrictions/recommendations:
only request arrays that are actually needed to reduce unnecessary data transfer
to/from the GPU
use an empty request and let the nodes add their dependencies
(e.g. the Train node requests its inputs, and if they are not needed downstream
they are not passed on)
set the (new) snapshot_every arg for the tf.Train node to the same value as in the
snapshot node, the requested arrays will then only be passed on when needed.
only inputs and outputs of the tf.Train node are available after it, if you want to snapshot
other arrays, add a snapshot node before the train node
graphs/points are not handled and thus should not be part of the global request. If they are
not part of the global request and are requested and consumed before the train node, that is fine.
gp.Snapshot: only arrays that are in the request/are added via the snapshot node should be
in the dataset_names array
auto_mixed_precision
optimizer_args
(and should match the one used in mknet)tf.data.Dataset
instead offeed_dict
to pass data to GPUTFData
use_tf_data
snapshot_every
arg for the tf.Train node to the same value as in the snapshot node, the requested arrays will then only be passed on when needed.dataset_names
array