batch안의 tensor size가 달라도 학습 시킬 수 있는 방법이 있나요?

안녕하세요
다들 2022년 새해복 많이 받으세요

음성데이터를 이용해 학습 데이터셋을 만들던 중 이런 오류가 발생했습니다.

아무래도 음성데이터다 보니, 파일마다 길이가 다를 것이고 그로 인해
tensor의 size가 다른데.
padding을 주는 방법밖에 없을까요?

음성분야외에도 자연어 문장 처리시에도, tensor의 크기가 달라질텐데. 자연어 처리 하시는 분들은 어떻게 하는지 궁금합니다.

텐서에 길이가 다른 텐서를 하나의 배치로 넣을 수는 없습니다.
텐서의 리스트만 가능하지만 이건 한개의 배치 입력으로 넣을 수 없습니다.

학습 과정에서는 음성과 자연어 뿐 아니라 Sequence Data를 다룬다면 패딩은 대부분 필수 입니다.
패딩을 하고 길이 텐서를 같이 가지고 다니는 것이 불편하지만 필수 입니다.
가끔 패딩으로 인해 발생되는 부가적인 계산을 줄이기 위해서 길이로 정렬을 하기도 합니다.(속도 개선은 있으나 성능 손실 있을 수 있음)

2개의 좋아요

감사합니다

처음에는 패딩시키는 것에 거부감이 있었는데, 글을 보고 그냥 했습니다.

길이 벡터를 들고 다니기도한가요?

패딩 이후에 네트워크 입력으로 들어갔다면 출력에서 실제 데이터 길이 만큼만을 사용해야합니다. 패딩으로 인해 발생한 출력은 사용하면 안되기 때문입니다.
그러려면 패딩 이전의 원래 길이를 알고 있어야하기 때문에 가지고 다닐 수 밖에 없습니다.