WaveNet是典型的音频端到端神经网络,和手动的特征提取方式(如MFCCs, Chroma, LinearPrediction Cepstrum Coefficients) 不同的当然是可以直接输入原始音频自动提特征。当然,WaveNet一开始是为了音频生成的,但是其核心结构扩展因果卷积,也可用在分类问题和回归问题:
我的实验是基于github上的代码wavenet-classifier和一个kaggle项目, 该代码是支持迁移学习预训练的,模型定义时加入load_dir和load参数即可:
wnc = WaveNetClassifier((4000,), (2,), kernel_size = 2, dilation_depth = 3, n_filters = 10, task = 'classification', load_dir='./pre_model/', load=True)
原文是480000维,264个类的分类问题,我这里改为了4000维,2个类的问题。
一开始跑的过程中会有AttributeError: ‘WaveNetClassifier’ object has no attribute ‘task’的错误,这个错误容易解决,https://github.com/mjpyeon/wavenet-classifier/issues/2,这里有解决方法加一行self.task = task就可以了。
另外,还可能碰到如下gpu错误:
Check failed: work_element_count > 0 (0 vs. 0) cuda_launch_config 继续阅读用WAVENET做音频分类的一些坑,实验bug详解,WaveNet迁移学习,Check failed: work_element_count > 0 (0 vs. 0) cuda_launch_config