Tensorflow tf.abs()替代,可以转换为TensorRT

问题描述 投票:1回答:1

我试图将我的Tensorflow冷冻模型转换为NVIDIA TensorRT引擎。我有TensorRT 3版本。 TensorRT不支持某些Tensorflow层/函数,如tf.Cast等。我的模型使用tf.abs()函数(编辑:实际上是由TensorRT支持,但不是由构建TensorRT引擎所需的UFF解析器支持),而我能够在将张量流检查点转换为冻结模型之前更改操作。

我需要用替代品替换tf.abs()。因此,我尝试在Tensorflow中执行以下numpy操作。

NumPy的:

mask = (x<0).astype(np.float32)
mask = 2*mask + 1 #(makes all 1s -1, and all 0s 1)
abs_vals = mask*x

张量流:z是零的张量,与x的形状相同

mask = tf.less(x, z)
#convert mask from boolean to integer or float

我不确定如何继续,因为我需要将tensorflow返回的布尔掩码转换为整数掩码,以便将其乘以输入,但TensorRT也不支持tf.Cast操作。

编辑:问题实际上是UFF解析器不支持abs函数,而TensorRT确实支持它。在此处添加错误日志。

使用输出节点generate_output / deprocess / add转换为UFF图号节点:361 UFF输出写入data / tmp.uff UFFParser:解析generate_output / generator / encoder_9 / lrelu / mul / x UFFParser:解析generate_output / generator / encoder_8 / lrelu / mul / x UFFParser:解析generate_output / generator / encoder_7 / lrelu / mul / x UFFParser:解析generate_output / generator / encoder_6 / lrelu / mul / x UFFParser:解析generate_output / generator / encoder_5 / lrelu / mul / x UFFParser:解析generate_output / generator / encoder_4 / lrelu / mul / x UFFParser:解析generate_output / generator / encoder_3 / lrelu / mul / x UFFParser:解析generate_output / generator / encoder_2 / lrelu / mul / x UFFParser:解析image_tensor UFFParser:解析generate_output / load_images / preprocess / mul / y UFFParser:解析generate_output / load_images / preprocess / mul UFFParser:解析generate_output / load_images / preprocess / sub / y UFFParser:解析generate_output / load_images / preprocess / sub UFFParser:解析generate_output / input_images / Reshape / sh ape UFFParser:解析generate_output / input_images /重塑UFFParser:解析generator / encoder_1 / conv / filter UFFParser:解析generate_output / generator / encoder_1 / conv / Conv2D UFFParser:解析generate_output / generator / encoder_2 / lrelu / mul UFFParser:解析generate_output / generator / encoder_2 / lrelu / mul_1 / x UFFParser:解析generate_output / generator / encoder_2 / lrelu / Abs UFFParser:解析器错误:generate_output / generator / encoder_2 / lrelu / Abs:其他非常量节点不支持一元无法解析UFF

python tensorflow nvidia tensor tensorrt
1个回答
1
投票

不幸的是,截至2018年4月,UFF转换不支持大量操作。这个操作相当于tf.abs():

abs_val = tf.maximum( 0, x ) + tf.maximum( 0, -x )
© www.soinside.com 2019 - 2024. All rights reserved.