Toybrick

楼主: wujialiang

pytorch模型转换问题

xsky

中级会员

积分
388
楼主
发表于 2020-2-20 20:43:19 | 显示全部楼层
本帖最后由 xsky 于 2020-2-21 09:48 编辑
jefferyzhang 发表于 2020-2-14 16:00
看log这里已经报错了,研究下你的模型这里是什么意思:
Syntax error in input! LexToken(NAMED_IDENTIFIER ...

RKNN v1.3, Pytorch v1.2

只一个FC层,使用.load_pytorch载入也是出现这样的错误,该从哪分析

  1. import torch
  2. import numpy as np

  3. from rknn.api import RKNN

  4. if __name__ == '__main__':

  5.     ic = 128
  6.     oc = 128
  7.     m = torch.nn.Linear(ic, oc)
  8.     m.eval()
  9.     m.float()

  10.     x = torch.full((1, ic), fill_value=0.1, dtype=torch.float)
  11.     pt = torch.jit.trace(m, x)
  12.     pt_file = "fc{128x128}.pt"

  13.     rknn = RKNN(verbose=True)
  14.     rknn.config(batch_size=1, channel_mean_value='0 0 0 1', reorder_channel='0 1 2',
  15.                 epochs=1)  # asymmetric_quantized-u8,  quantized_dtype='dynamic_fixed_point-16'

  16.     rknn_file = pt_file + '.rknn'
  17.     pt.save(pt_file)
  18.     rknn.load_pytorch(model=pt_file, input_size_list=[[1, ic]])

  19.     onnx_file = pt_file + '.onnx'
  20.     # torch.onnx.export(m, x, onnx_file,
  21.     #                   export_params=True,  # store the trained parameter weights inside the model file
  22.     #                   # do_constant_folding=True,  # whether to execute constant folding for optimization
  23.     #                   opset_version=9,  # the ONNX version to export the model to
  24.     #                   input_names=['input'],  # the model's input names
  25.     #                   output_names=['output']  # the model's output names
  26.     #                   # dynamic_axes={'input' : {0 : 'batch_size'},    # variable lenght axes
  27.     #                   #              'output' : {0 : 'batch_size'}}
  28.     #                   )
  29.     # rknn.load_onnx(model=onnx_file)

  30.     ret = rknn.build(do_quantization=False, dataset='./dataset.txt')
  31.     rknn.export_rknn(rknn_file)

  32.     rknn.release()
复制代码

代码中,如果导出.onnx,再load_onnx是可以正常build的,load_pytorch后bulid报错和楼主应该是一样的消息
  1. fc{128x128}.pt ********************
  2. WARNING: Token 'COMMENT' defined, but not used
  3. WARNING: There is 1 unused token
  4. !!!!! Illegal character '"'
  5. Syntax error in input! LexToken(NAMED_IDENTIFIER,'fc',1,27)
  6. !!!!! Illegal character '"'
  7. D import clients finished
  8. 2020-02-20 20:40:13.391282: I tensorflow/core/platform/cpu_feature_guard.cc:142] Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2
  9. I Build fc{128x128} complete.
  10. D Optimizing network with force_1d_tensor, swapper, merge_layer, auto_fill_bn, resize_nearest_transformer, auto_fill_multiply, merge_avgpool_conv1x1, auto_fill_zero_bias, proposal_opt_import
  11. D Optimizing network with conv2d_big_kernel_size_transform
  12. W Genreate input meta fail, please check model.
  13. W External input meta file "C:\Users\dm\AppData\Local\Temp\tmpyqrr_3bz\fc128x128_inputmeta.yml" is not exists.
  14. Traceback (most recent call last):
  15.   File "E:/Work/_Code/dmax/test/lstm/fc.py", line 39, in <module>
  16.     ret = rknn.build(do_quantization=False, dataset='./dataset.txt')
  17.   File "D:\Program Files\Python\Python36\lib\site-packages\rknn\api\rknn.py", line 238, in build
  18.     ret = self.rknn_base.build(do_quantization=do_quantization, dataset=dataset, pack_vdata=pre_compile, batch_size=rknn_batch_size)
  19.   File "rknn\api\rknn_base.py", line 719, in rknn.api.rknn_base.RKNNBase.build
  20.   File "rknn\api\rknn_base.py", line 2249, in rknn.api.rknn_base.RKNNBase._generate_inputmeta
  21. IndexError: list index out of range
复制代码
load_pytorch没报错,在build时报的错:
W Genreate input meta fail, please check model.
W External input meta file "C:\Users\dm\AppData\Local\Temp\tmpszyfyeur\lstm1414_inputmeta.yml" is not exists.


rknn.config 中的参数  channel_mean_value='0 0 0 1', reorder_channel='0 1 2'  是三通道的,如果像这个,输入只是一个向量的,这里该怎么设置, channel_mean_value='0 0 1', reorder_channel='0 1 ' 么?但这里即便按chw三个维度设置,fc的输入输出均是[1,x]向量,onnx格式也能正常导出rknn。

回复

使用道具 举报

xsky

中级会员

积分
388
沙发
发表于 2020-2-21 09:48:58 | 显示全部楼层
jefferyzhang 发表于 2020-2-21 08:42
这个问题我报告给NPU部门了,等他们答复我会回你

好的谢谢啊
回复

使用道具 举报

xsky

中级会员

积分
388
板凳
发表于 2020-2-22 22:43:13 | 显示全部楼层
jefferyzhang 发表于 2020-2-22 16:19
NPU部门回复:
pytorch模型必须继承自torch.nn.Module,1个fc层的pytorch示例可以参考test.py:

好的谢谢,我试下
回复

使用道具 举报

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

本版积分规则

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


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