The following shows an example code for adding new layers to SOL’s TensorFlow frontend.
import sol.tensorflow
def parse_inputs(conf, paramA, paramB, paramC=None):
return tuple(scope[i.unique()] for i in node.inputs())
def my_handler(conf, a, b, c=None):
input = sol.tensorflow.get_tensor(conf.get('input'), 0)
x = sol.hlir.Tensor(my_backend_lib.add_my_layer(input, a, b, c))
sol.tensorflow.set_tensor(conf.get('name'), 0, x)
sol.tensorflow.add_handler("not_implemented_by_sol", my_handler)
my_handler
gets called with handler(conf, *args, **kwargs)
so the
order and name of the arguments need to match the TensorFlow function call!
Within your handler you can either use sol.hlir
API or your own backend to
add layers to the neural network representation within SOL. Last, don’t forget
to add the output tensor of your layer using sol.tensorflow.set_tensor(key, index, tensor)
, so that following layers can access it! Use
sol.tensorflow.get_tensor(key, idx)
to retrieve a tensor instance.