Toybrick

1.3.2 还不支持 pytorch 和 onnx 的 matmul 吗?

kkkaaa

中级会员

积分
203
楼主
发表于 2020-4-30 15:20:09    查看: 6884|回复: 8 | [复制链接]    打印 | 只看该作者
试了 从pytorch 直接转 rknn, 和 pytorch->onnx->rknn, matmul 这个 op 都不支持。在 rknn-toolkiet 1.3.2 下测的
回复

使用道具 举报

jefferyzhang

版主

积分
12937
沙发
发表于 2020-5-1 21:17:01 | 只看该作者
矩阵乘一直都支持,请把不支持的log具体发出来给我们看下。
回复

使用道具 举报

kkkaaa

中级会员

积分
203
板凳
 楼主| 发表于 2020-5-6 16:46:45 | 只看该作者
jefferyzhang 发表于 2020-5-1 21:17
矩阵乘一直都支持,请把不支持的log具体发出来给我们看下。

报错 log 如下,从 pytorch 直接转 rknn
toymodel3_matrix_mult.pt ********************
WARNING: Token 'COMMENT' defined, but not used
WARNING: There is 1 unused token
E Catch exception when loading pytorch model: toymodel3_matrix_mult.pt!
E Traceback (most recent call last):
E   File "rknn/api/rknn_base.py", line 611, in rknn.api.rknn_base.RKNNBase.load_pytorch
E   File "rknn/base/RKNNlib/app/importer/import_pytorch.py", line 97, in rknn.base.RKNNlib.app.importer.import_pytorch.ImportPytorch.run
E   File "rknn/base/RKNNlib/converter/convert_pytorch.py", line 570, in rknn.base.RKNNlib.converter.convert_pytorch.convert_pytorch.__init__
E   File "rknn/base/RKNNlib/converter/convert_pytorch.py", line 654, in rknn.base.RKNNlib.converter.convert_pytorch.convert_pytorch.model_simplify
E   File "rknn/base/RKNNlib/converter/convert_pytorch.py", line 113, in rknn.base.RKNNlib.converter.convert_pytorch.torch_inference_engine.shape_pick
E   File "rknn/base/RKNNlib/converter/convert_pytorch.py", line 148, in rknn.base.RKNNlib.converter.convert_pytorch.torch_inference_engine.__ir_shape_inference
E KeyError: 'aten::matmul'

我的模型:
  1. class ToyModel3(nn.Module):
  2.     """
  3.     测试目的:用 one-hot vector multiplication 代替 if-else
  4.     torch -> onnx -> rknn 转化失败, matmul 不支持
  5.     torch -> rknn 失败, matmul 不支持

  6.     """
  7.     def __init__(self, num_channels):
  8.         super(ToyModel3, self).__init__()
  9.         self.num_channels = num_channels
  10.         self.conv0 = nn.Conv2d(self.num_channels, self.num_channels,
  11.                                kernel_size=3, stride=1, padding=0, bias=False)
  12.         self.conv1 = nn.Conv2d(self.num_channels, self.num_channels,
  13.                                kernel_size=3, stride=1, padding=0, bias=False)
  14.         self.conv2 = nn.Conv2d(self.num_channels, self.num_channels,
  15.                                kernel_size=3, stride=1, padding=0, bias=False)
  16.         n = self.num_channels

  17.         self.conv0.weight = torch.nn.Parameter(torch.Tensor(np.ones((n, n, 3, 3)).astype(np.float32)))
  18.         self.conv1.weight = torch.nn.Parameter(torch.Tensor(2 * np.ones((n, n, 3, 3)).astype(np.float32)))
  19.         self.conv2.weight = torch.nn.Parameter(torch.Tensor(3 * np.ones((n, n, 3, 3)).astype(np.float32)))

  20.     def forward(self, x, one_hot_vec):
  21.         """

  22.         :param x:
  23.         :param one_hot_vec: of shape [3, 1]
  24.         :return:
  25.         """
  26.         x0 = self.conv0(x)
  27.         x1 = self.conv0(x)
  28.         x2 = self.conv0(x)
  29.         y = torch.cat([x0, x1, x2], axis=0)
  30.         yt = y.permute(1, 2, 3, 0)
  31.         out = torch.matmul(yt, one_hot_vec)
  32.         return out
复制代码
回复

使用道具 举报

jefferyzhang

版主

积分
12937
地板
发表于 2020-5-8 09:29:02 | 只看该作者
1. pytorch版本号多少?
2. 试下转onnx再转rknn
3. 问题已经包给npu部门了,等他们支持
回复

使用道具 举报

kkkaaa

中级会员

积分
203
5#
 楼主| 发表于 2020-5-8 09:52:03 | 只看该作者
jefferyzhang 发表于 2020-5-8 09:29
1. pytorch版本号多少?
2. 试下转onnx再转rknn
3. 问题已经包给npu部门了,等他们支持 ...

1. pytorch 1.2.0
2. torch->onnx->rknn:torch->onnx 可以,onnx->rknn 报错如下
--> Loading model
/data01/wens/venv/rknn1.3.3/lib/python3.6/site-packages/onnx_tf/common/__init__.py:87: UserWarning: FrontendHandler.get_outputs_names is deprecated. It will be removed in future release.. Use node.outputs instead.
  warnings.warn(message)
W Not match tensor MatMul_10ut0
E Try match MatMul_10ut0 failed, catch exception!
W ----------------Warning(1)----------------
E Catch exception when loading onnx model: toymodel3_matrix_mult.onnx!
E Traceback (most recent call last):
E   File "rknn/base/RKNNlib/converter/convert_onnx.py", line 1071, in rknn.base.RKNNlib.converter.convert_onnx.convert_onnx.match_paragraph_and_param
E   File "rknn/base/RKNNlib/converter/convert_onnx.py", line 980, in rknn.base.RKNNlib.converter.convert_onnx.convert_onnx._onnx_push_ready_tensor
E TypeError: 'NoneType' object is not iterable
E During handling of the above exception, another exception occurred:
E Traceback (most recent call last):
E   File "rknn/api/rknn_base.py", line 513, in rknn.api.rknn_base.RKNNBase.load_onnx
E   File "rknn/base/RKNNlib/converter/convert_onnx.py", line 1077, in rknn.base.RKNNlib.converter.convert_onnx.convert_onnx.match_paragraph_and_param
E   File "rknn/api/rknn_log.py", line 312, in rknn.api.rknn_log.RKNNLog.e
E ValueError: Try match MatMul_10ut0 failed, catch exception!
Load resnet50v2 failed!

3. 谢谢!
回复

使用道具 举报

jefferyzhang

版主

积分
12937
6#
发表于 2020-5-8 11:02:49 | 只看该作者
了解了
回复

使用道具 举报

xindongzhang

注册会员

积分
82
7#
发表于 2020-8-4 18:06:21 | 只看该作者

你好,请问matmul的问题解决了吗?谢谢
回复

使用道具 举报

jefferyzhang

版主

积分
12937
8#
发表于 2020-8-4 23:14:09 | 只看该作者
xindongzhang 发表于 2020-8-4 18:06
你好,请问matmul的问题解决了吗?谢谢

本周会发布1.4.0,届时可以再试下。
或者加入置顶帖的rknn官方交流群里可以直接询问rknn的工程师
回复

使用道具 举报

xindongzhang

注册会员

积分
82
9#
发表于 2020-8-5 09:35:21 | 只看该作者
jefferyzhang 发表于 2020-8-4 23:14
本周会发布1.4.0,届时可以再试下。
或者加入置顶帖的rknn官方交流群里可以直接询问rknn的工程师 ...

非常感谢
回复

使用道具 举报

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

本版积分规则

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


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