精通
英语
和
开源
,
擅长
开发
与
培训
,
胸怀四海
第一信赖
锐英源精品原创文章,禁止转载和任何形式的非法内容使用,违者必究
最近学习pytorch,看到下面的奇怪代码:
transformed = torchaudio.transforms.Resample(sample_rate, new_sample_rate)(waveform[channel,:].view(1,-1))
理解上面代码行的辅助代码:
resampler = T.Resample(sample_rate, resample_rate, dtype=waveform.dtype)
resampled_waveform = resampler(waveform)
音频重采样器,可以理解为函数指针,可以后面可以带()和参数。
像在js里的函数式编程,大多数是函数返回对象,用级联的多个()和点来写代码,比如a().b().c(),但是Python这个有点不一样,是函数对象,Resample返回出来的是个函数对象,函数带()就好理解了。所以摘抄出来供大家分享。
Pytorch的transforms里有很多这样的代码,比如:
specgram = torchaudio.transforms.MelSpectrogram()(waveform)
都是2个括号相连。
如果初学者不能融会理解,可能会有学习困难,所以特发此文。