๐Ÿ’ฉ ์—๋Ÿฌ ํ•ด๊ฒฐ

[PyTorch/์—๋Ÿฌ ํ•ด๊ฒฐ] torchaudio.transforms.SpectralCentroid output์ด nan์ด ๋˜๋Š” ๋ฌธ์ œ

๋ณต๋งŒ 2021. 10. 16. 20:55

ํ›ˆ๋ จ์„ ์‹œํ‚ค๋‹ค๊ฐ€ loss๊ฐ€ ์ž๊พธ nan์ด ๋˜๋Š” ํ˜„์ƒ์ด ๋ฐœ์ƒํ–ˆ๋‹ค.

 

๋””๋ฒ„๊น…์„ ํ•ด๋ณด๋‹ˆ loss๊ฐ€ ์ž˜ ์ค„์–ด๋“ค๋‹ค๊ฐ€ ๊ฐ‘์ž๊ธฐ nan์œผ๋กœ ๋ฐ”๋€Œ์–ด์„œ ํ•™์Šต ๊ณผ์ • ์ž์ฒด์˜ ๋ฌธ์ œ๋Š” ์•„๋‹Œ ๊ฒƒ ๊ฐ™์•˜๊ณ ,

์‚ดํŽด๋ณด๋‹ˆ ๋ชจ๋ธ ๋‚ด๋ถ€์—์„œ ๊ฐ’์ด nan์ด ๋˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ์—ˆ๋‹ค.

 

๋ชจ๋ธ์—์„œ torchaudio.transforms.SpectralCentroid๋ฅผ ์ด์šฉํ•ด ๋ฐ์ดํ„ฐ์˜ spectral centroid๋ฅผ ์ถ”์ถœํ•˜๋Š” ๊ณผ์ •์ด ์žˆ์—ˆ๋Š”๋ฐ,

์ผ๋ถ€ ๋ฐ์ดํ„ฐ์˜ spectral centroid๊ฐ€ nan์„ ํฌํ•จํ•˜๊ณ  ์žˆ์—ˆ๋‹ค.

 

์ฝ”๋“œ๋ฅผ ์‚ดํŽด๋ณด๋‹ˆ spectral centroid๋ฅผ ๊ณ„์‚ฐํ•˜๋Š” ๊ณผ์ •์—์„œ spectrogram์˜ sum์œผ๋กœ ๊ฐ’์„ ๋‚˜๋ˆ ์ฃผ๋Š” ๊ณผ์ •์ด ์žˆ์—ˆ๋Š”๋ฐ, (๋งˆ์ง€๋ง‰ ์ค„)

์ด ๊ฐ’์ด 0์ด ๋˜์–ด์„œ nan๊ฐ’์ด ๋‚˜์˜จ ๊ฒƒ์ด์—ˆ๋‹ค.

 

Solution

torch.nan_to_num์„ ์ด์šฉํ•ด spectral centroid์˜ ๊ฐ’์„ 0์œผ๋กœ ๋ฐ”๊ฟ”์ฃผ์–ด ํ•ด๊ฒฐํ–ˆ๋‹ค.

def forward(self, x):
    out = torchaudio.transforms.SpectralCentroid()(x)
    out = torch.nan_to_num(out)
    ...

 

๋‹ค๋ฅธ ๊ฒƒ๋„ ์•„๋‹ˆ๊ณ  torchaudio๊ฐ€ ๋”ฅ๋Ÿฌ๋‹ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ธ๋ฐ.. nan๊ฐ’์€ ์•Œ์•„์„œ ์•ˆ๋‚˜์˜ค๊ฒŒ ์ฒ˜๋ฆฌํ•ด์คฌ์–ด์•ผ ํ•˜๋Š” ๊ฑฐ ์•„๋‹Œ๊ฐ€? ํ•˜๋Š” ์ƒ๊ฐ์ด ๋“ค๋ฉฐ ์˜ค๋Š˜๋„ ํ•œ 3์‹œ๊ฐ„์„ ๋‚ ๋ ธ๋‹ค.. ^_^

๋ฐ˜์‘ํ˜•