Tensorpack trainers have a verbose interface for maximum flexibility. Then, there are interfaces built on top of trainers to simplify the use, when you don’t want to customize too much.
With ModelDesc and TrainConfig¶
This interface is enough for most types of single-cost tasks. A lot of examples are written in this interface.
expects 4 arguments to setup the graph:
InputSource, get_cost function, and an optimizer.
ModelDesc describes a model by packing 3 of them together into one object:
class MyModel(ModelDesc): def inputs(self): return [tf.placeholder(dtype, shape, name), tf.placeholder(dtype, shape, name), ... ] def build_graph(self, tensorA, tensorB, ...): # inputs # build the graph return cost # returns the cost tensor def optimizer(self): return tf.train.GradientDescentOptimizer(0.1)
inputs should define the metainfo of all the inputs your graph will take to build.
build_graph takes inputs tensors that matches what you’ve defined in
You can use any symbolic functions in
build_graph, including TensorFlow core library
functions and other symbolic libraries.
build_graph will be the tower function, so you need to follow some rules.
Because this interface is for single-cost training, you need to return the cost tensor.
After defining such a model, use it with
config = TrainConfig( model=MyModel() dataflow=my_dataflow, # data=my_inputsource, # alternatively, use a customized InputSource callbacks=[...], # some default callbacks are automatically applied # some default monitors are automatically applied steps_per_epoch=300, # default to the size of your InputSource/DataFlow ) trainer = SomeTrainer() # trainer = SyncMultiGPUTrainerParameterServer(8) launch_train_with_config(config, trainer)
Some wrappers were made on top of tensorpack trainers, to create a Keras-like interface. See Tensorpack+Keras examples for details.
Raw Trainer Interface¶
To get a lower-level control, you can also access trainer methods directly:
Build the graph: For single-cost trainers, build the graph by calling SingleCostTrainer.setup_graph.
Read their API documentation for detail usage.