felixfuyihui / Uformer

Uformer: A Unet based dilated complex & real dual-path conformer network for simultaneous speech enhancement and dereverberation
94 stars 16 forks source link

关于复现网络出现的问题 #9

Open Cagemoney opened 1 year ago

Cagemoney commented 1 year ago

作者您好,昨天的问题不知道怎么就不见了。我邮箱收到了您的回复,训练loss是正常的。我现在依然在查找问题的根源所在。如果您能把test 模型的源码公开,这对我解决问题会有很大的帮助。有一点需要咨询一下您,计算loss时为什么是返回三个值?期望您的回复。

昨天的问题是:测试模型时输出为静音。

felixfuyihui commented 1 year ago

作者您好,昨天的问题不知道怎么就不见了。我邮箱收到了您的回复,训练loss是正常的。我现在依然在查找问题的根源所在。如果您能把test 模型的源码公开,这对我解决问题会有很大的帮助。有一点需要咨询一下您,计算loss时为什么是返回三个值?期望您的回复。

昨天的问题是:测试模型时输出为静音。

代码都在之前的服务器上 所以现在也拿不出来。我给您一些思路看能不能解决你的问题:

  1. 检查数据,看是否noisy和clean对齐了
  2. 使用一条语音过我代码的stft和istft代码,看能不能完美重构,如果不能那就建议用torchaudio吧。我做这个工作那会torchaudio还没提复数谱的功能,现在支持了。
  3. loss正常是指什么loss正常?三个loss是mae mse和sisnr,论文里有讲。
Cagemoney commented 1 year ago

非常感谢您的回复。我将根据您提供的思路尝试解决这个问题。关于loss:训练loss是随epochs下降的。计算loss时return了三个值,比如:计算complex loss时: def calloss_cplxmse(output, source):

B 2 F T

loss = 0
output_real, output_imag = output[:,0], output[:,1]
source_real, source_imag = source[:,0], source[:,1]
for i in range(output.shape[0]):
    loss_real = F.mse_loss(output_real[i], source_real[i], reduction='sum')
    loss_real = loss_real / output_real.shape[-2]
    loss_imag = F.mse_loss(output_imag[i], source_imag[i], reduction='sum')
    loss_imag = loss_imag / output_imag.shape[-2]
    loss = loss + loss_real + loss_imag
return loss / output.shape[0] / 2, loss / output.shape[0] / 2, loss / output.shape[0] / 2
felixfuyihui commented 1 year ago

非常感谢您的回复。我将根据您提供的思路尝试解决这个问题。关于loss:训练loss是随epochs下降的。计算loss时return了三个值,比如:计算complex loss时: def calloss_cplxmse(output, source): # B 2 F T loss = 0 output_real, output_imag = output[:,0], output[:,1] source_real, source_imag = source[:,0], source[:,1] for i in range(output.shape[0]): loss_real = F.mse_loss(output_real[i], source_real[i], reduction='sum') loss_real = loss_real / output_real.shape[-2] loss_imag = F.mse_loss(output_imag[i], source_imag[i], reduction='sum') loss_imag = loss_imag / output_imag.shape[-2] loss = loss + loss_real + loss_imag return loss / output.shape[0] / 2, loss / output.shape[0] / 2, loss / output.shape[0] / 2

哦这三个啊 可能是屎山代码吧哈哈哈哈 不用在意 一个就行了

Cagemoney commented 1 year ago

好的,感谢您的耐心回复,我是菜鸟所以问的比较多哈哈哈

felixfuyihui commented 1 year ago

好的,感谢您的耐心回复,我是菜鸟所以问的比较多哈哈哈

没事没事 有问题随时交流哈