I have a custom layer that I want to try and replicate in tensorrt. It is basically a weight normilization operation.
class Conv2DWeightNorm(tf.layers.Conv2D): def build(self, input_shape): self.wn_g = self.add_weight( name='wn_g', shape=(self.filters,), dtype=self.dtype, initializer=tf.initializers.ones, trainable=True, ) super(Conv2DWeightNorm, self).build(input_shape) square_sum = tf.reduce_sum( tf.square(self.kernel), [0, 1, 2], keepdims=False) inv_norm = tf.rsqrt(square_sum) self.kernel = self.kernel * (inv_norm * self.wn_g)
The idea is basically it normilizes the gradient to length 1, preserving only the direction.
Currently i;m trying to port the model using the UFF parser and the experience has been a nightmare. Its giving me the error
[TensorRT] ERROR: UFFParser: Parser error: model_lr/0/conv2d_weight_norm/Sum: axes.size() != 0 not yet supported for reduce constant nodes
I also can’t seem to set dimensions with -1 size (for variable size in fully convolutional networks) but I guess thats another question.