UPSample ONNX выдает INVALID_GRAPH при попытке конвертировать билинейный слой в onnx - PullRequest
0 голосов
/ 20 июня 2019

когда я конвертирую сеть с билинейным слоем, обученным на Pytorch, в ONNX, я получаю следующую ошибку

RuntimeError: [ONNXRuntimeError]: 10: INVALID_GRAPH: загрузить модель из test.onnx не удалось: Ошибка типа: введите «tenor (int64)» ввода параметр (11) оператора (Floor) в node () недействителен.

Я не уверен, почему возникает эта ошибка, я пытался собрать ONNX из исходного кода, но проблема все еще не решена.

Есть идеи о том, что может вызвать эту ошибку? или как решить проблему?

Способ размножения-

from torch import nn

import torch
import torch.nn.functional as F
import onnxruntime as rt

class Upsample(torch.nn.Module):
    def forward(self, x):
        #l = nn.Conv2d(3, 3, kernel_size=1, stride=1, padding=1, bias=True)
        return F.interpolate(x, scale_factor=2, mode="bilinear", align_corners=False)

m = Upsample()
v = torch.randn(1,3,128,128, dtype=torch.float32, requires_grad=False)

torch.onnx.export(m, v, "test.onnx")
sess = rt.InferenceSession("test.onnx")

1 Ответ

4 голосов
/ 11 июля 2019

Эта ошибка была исправлена ​​в https://github.com/pytorch/pytorch/pull/21434 (исправление находится в functions.py), поэтому вы сможете получить ее, если установите ночную сборку pytorch.

Однако в этом же PR преобразование Upsample в билинейном режиме было отключено; причина в том, что билинейный режим Pytorch не совпадает с ONNX, и режим Nearest является единственным поддерживаемым в настоящее время режимом.

Upsample (теперь называется Resize) в ONNX обновляется в opset 11 для поддержки билинейного режима, который выравнивается с Pytorch в https://github.com/onnx/onnx/pull/2057,, но это еще не выдвинуто.

...