정상동작 하지만 Onnx로 내보낼때만 에러가 발생합니다.

안녕하세요
딥린이가 질문하나 드릴게요
Rnn 모델을 onnx로 내보내는 과정에서 발생하는 에러입니다

logits_flatten = binary_logits.view(-1, 2)
output = logits_flatten.float()
probabilities = nn.functional.softmax(output.div(0.8), dim=1)

current_sequence_input = torch.multinomial(probabilities. Data, 1).squeeze().unsqueeze(0).unsqueeze(1)

###여기서 에러가 발생합니다 torch.multinomial(probabilities.data ===>. Data RuntimeError: probability tensor contains either inf, nan or element < 0

my_modifier_scripted = torch.jit.script(Mrnn)

추론할때 또는 토치스크립트 코드에서 정상 동작을 합니다
단 onnx로 내보낼때 에러가 한번 생기는데 다시 한번 실행 시키면
onnx파일도 만들어집니다 하지만 문제는 계속 같은 결과만 나옵니다
그래서 아무래도 저 에러를 해결해야지만 될거 같은데 전혀 방법을 모르겠습니다

아시는 선배님이 계시면 딥린이에게 은총을 주십쇼~

감사!

==================================================
replacement=True 이렇게바꿔 보았는데요

torch. Multinomial(probabilities, 1, replacement=True)

이번에는 다음과 같은 에러가 나옵니다

RuntimeError: philox_cuda_state for an unexpected CUDA generator used during capture. In regions captured by CUDA graphs, you may only use the default CUDA RNG generator on the device that’s current when capture begins. If you need a non-default (user-supplied) generator, or a generator on another device, please file an issue.

cpu만 사용하는걸로 해서 해보니 에러가 다음과 같네요
invalid multinomial distribution (encountering probability entry < 0)

ㅠ.ㅠ

안녕하세요
보여주신 내용만으로는 torch.multinomial 에 확률로 들어와야하는 텐서가 문제가 있는다는 것인데요(없거나). 그 부분을 확인해 보셔야할 것 같습니다.

ONNX 변환에서 발생하는 오류들은 너무 다양해서 정확히 알기는 어렵습니다.
에러 메시지가 꼭 그 문제를 말하는 것이 아닐 수 있어서 전체를 봐야 알 수 있습니다.
스크립트 변환은 된다고 하셨는데요 jit.trace는 어떤지도 확인해 보시면 좋을 것 같습니다.

안녕하세요 답변 감사합니다 혹시 시간이 되신다면 코랩을 한번 봐주실수 있을까요?
업로드 해 놓았습니다 코랩에서는 onnx 변환과정에서 RuntimeError: invalid multinomial distribution (encountering probability entry < 0) 이에러가 발생하고 더이상 진행이 되지 않네요 ㅠ.ㅠ

이 글은 마지막 댓글이 달린지 오래(30일)되어 자동으로 닫혔습니다. 댓글 대신 새로운 글을 작성해주세요! :slight_smile: