张量流tf.abs()可转换为TensorRT的备选方案

2024-06-01 00:31:27 发布

您现在位置:Python中文网/ 问答频道 /正文

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

我需要将tf.abs()替换为备用。因此,我尝试在Tensorflow中执行以下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的形状相同

^{pr2}$

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

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

Using output node generate_output/deprocess/add Converting to UFF graph No. nodes: 361 UFF Output written to data/tmp.uff UFFParser: parsing generate_output/generator/encoder_9/lrelu/mul/x UFFParser: parsing generate_output/generator/encoder_8/lrelu/mul/x UFFParser: parsing generate_output/generator/encoder_7/lrelu/mul/x UFFParser: parsing generate_output/generator/encoder_6/lrelu/mul/x UFFParser: parsing generate_output/generator/encoder_5/lrelu/mul/x UFFParser: parsing generate_output/generator/encoder_4/lrelu/mul/x UFFParser: parsing generate_output/generator/encoder_3/lrelu/mul/x UFFParser: parsing generate_output/generator/encoder_2/lrelu/mul/x UFFParser: parsing image_tensor UFFParser: parsing generate_output/load_images/preprocess/mul/y UFFParser: parsing generate_output/load_images/preprocess/mul UFFParser: parsing generate_output/load_images/preprocess/sub/y UFFParser: parsing generate_output/load_images/preprocess/sub UFFParser: parsing generate_output/input_images/Reshape/shape UFFParser: parsing generate_output/input_images/Reshape UFFParser: parsing generator/encoder_1/conv/filter UFFParser: parsing generate_output/generator/encoder_1/conv/Conv2D UFFParser: parsing generate_output/generator/encoder_2/lrelu/mul UFFParser: parsing generate_output/generator/encoder_2/lrelu/mul_1/x UFFParser: parsing generate_output/generator/encoder_2/lrelu/Abs UFFParser: Parser error: generate_output/generator/encoder_2/lrelu/Abs: Unary not supported for other non-constant node Failed to parse UFF


Tags: encoderoutputtfloadmaskabsgeneratorgenerate
1条回答
网友
1楼 · 发布于 2024-06-01 00:31:27

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

abs_val = tf.maximum( 0, x ) + tf.maximum( 0, -x )

相关问题 更多 >