티스토리 뷰

이 역시 pytorch에서 torchscript로 저장한 model을 불러와 forward하는 도중 만난 error.

(솔직히 pytorch에서 scriptmodule로 변환 성공했으면 그 모델 가져왔을 때는 좀 그냥 돌아야하는거 아니냐... 

double check하기 힘들다...ㅇㅅㅇ)

 

 

RuntimeError: Cannot input a tensor of dimension other than 0 as a scalar argument   가 난 부분은

tmp = torch.tensor(tmp)

이 줄을 실행하다가 저 에러가 났다.

 

ㅇㅅㅇ 이게 왜그런가 봤는데 numpy가 input으로 들어가면서 난 error 같았다.

 

python가서 직접 tmp의 type을 찍어보니 numpy가 나오고, 사실 numpy -> tensor 변환은 tensor.from_numpy를 써야했지만 나는 이걸 쓰기엔 중간에 tmp를 다시 부를 때는 tmp의 type이 tensor가 되어있어서 중간에 에러가 나서 돌지 않기 때문에 그냥 범용적ㅇ니 torch.tensor를 사용하였다. 그랬더니 C++에서 사용할 때 에러가 나네 .ㅇㅅㅇ

 

여튼 해결을 하긴 했는데

tmp = tensor.as_tensor(tmp)

를 사용하니 C++에서도  error 없이 넘어갔다.

 

torch.tensor 와 torch.as_tensor 의 차이는 

전자는 항상 데이터를 복사하고 

후자는 데이터의 복사를 피하려고 한다는데 보통 원본 데이터가 numpy array일 때라고 한다.

 

근데 이게 memory copy 관점에서 다른 것 같은데 왜 하나는 error가 나고 하나는 안나는 것일지 궁금하다.

 

https://pytorch.org/docs/stable/generated/torch.as_tensor.html

 

torch.as_tensor — PyTorch 1.9.1 documentation

Shortcuts

pytorch.org

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
글 보관함