Toybrick

rknn toolkit output data format

tigertang

注册会员

积分
136
楼主
发表于 2019-11-14 11:27:34    查看: 7342|回复: 0 | [复制链接]    打印 | 只看该作者
本帖最后由 tigertang 于 2019-11-14 11:41 编辑

您好!

我正在使用rknn-toolkit 1.2.1在转换模型,并在rk3399pro上推理。关于这个toolkit转换的输出格式,我有一些费解的地方。

我的测试模型只包含一个conv:
  1. img = tf.placeholder(name="img", dtype=tf.float32, shape=(1, feature_map_size, feature_map_size, input_channels))
  2. util.generate_model(self.get_model_path(), normalize_keras_wrapper(tf.keras.layers.Conv2D), img, filters=output_channels, kernel_size=(ksize, ksize), strides=stride, padding='same', name='the_conv')
复制代码


它的输入输出是这样的:
  1. >>> inputs
  2. [<tf.Operation 'img' type=Placeholder>]
  3. >>> inputs[0].outputs
  4. [<tf.Tensor 'img:0' shape=(1, 7, 7, 1916) dtype=float32>]
  5. >>> outputs
  6. [<tf.Operation 'the_conv/BiasAdd' type=BiasAdd>]
  7. >>> outputs[0].outputs
  8. [<tf.Tensor 'the_conv/BiasAdd:0' shape=(1, 7, 7, 320) dtype=float32>]
复制代码


我把它dump成pb然后再用toolkit转成rknn的格式:



最后在板子上看到的格式却让我有些迷惑(用rknn_query拿到的信息):



我可以理解float32被转成了float16因为文档里似乎写了在模型未量化的情况下使用do_quantization=False会强制使得input,output被压到float16。但是我不能理解的是这个rknn_tensor_attr.dims。为什么这个输出的dims看起来是一个NHWC,但是fmt里写的却是NCHW。

我也拿到了RKNN_QUERY_PERF_DETAIL内的信息,以下是我把它拿出来重新parse后的样子,看起来conv后面又重新被transpose了一下:



想请问这种情况是我的转换代码写错了,还是说fmt显示的格式就有问题?



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

产品中心 购买渠道 开源社区 Wiki教程 资料下载 关于Toybrick


快速回复 返回顶部 返回列表