|
本帖最后由 tigertang 于 2019-11-14 11:41 编辑
您好!
我正在使用rknn-toolkit 1.2.1在转换模型,并在rk3399pro上推理。关于这个toolkit转换的输出格式,我有一些费解的地方。
我的测试模型只包含一个conv:- img = tf.placeholder(name="img", dtype=tf.float32, shape=(1, feature_map_size, feature_map_size, input_channels))
- 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')
它的输入输出是这样的:
- >>> inputs
- [<tf.Operation 'img' type=Placeholder>]
- >>> inputs[0].outputs
- [<tf.Tensor 'img:0' shape=(1, 7, 7, 1916) dtype=float32>]
- >>> outputs
- [<tf.Operation 'the_conv/BiasAdd' type=BiasAdd>]
- >>> outputs[0].outputs
- [<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
|