python - 如何使用 CNN 和 PyTorch 处理输入数据以进行音频分类?

标签 python machine-learning classification pytorch signal-processing

作为一名致力于 DSP 和 ML 领域的工程师学生,我正在开发一个音频分类项目,输入是贝斯、键盘、吉他等乐器的短片(4 秒)。( NSynth Dataset by the Magenta team at Google )。

这个想法是将所有短片(.wav 文件)转换为频谱图或梅尔频谱图,然后应用 CNN 来训练模型。

但是,我的问题是,由于整个数据集很大(大约23GB),我想知道是否应该首先将所有音频文件转换为PNG等图像,然后应用CNN。我觉得这可能需要很多时间,而且它会使我的输入数据的存储空间增加一倍,因为现在是音频+图像(可能高达 70GB)。

因此,我想知道是否有任何解决方法可以加快这一过程。

提前致谢。

最佳答案

预处理是完全值得的。您很可能最终会运行多个实验,然后您的网络才能按您希望的方式工作,并且您不想每次都浪费时间预处理功能,因为您想更改一些超参数。

我宁愿直接保存 PyTorch 张量( torch.save 使用 Python 的标准 pickling 协议(protocol))或 NumPy 数组( numpy.savez 将序列化数组保存到 zip 文件中),而不是使用 PNG。如果您关心磁盘空间,可以考虑numpy.save_compressed .

关于python - 如何使用 CNN 和 PyTorch 处理输入数据以进行音频分类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59854794/

相关文章:

python - 为什么我的决策树创建的拆分实际上并未划分样本?

python - 垃圾邮件过滤器 - Python 新手

python - pickle 加载错误

machine-learning - 聚类实现异构组

python - 在分割数据之后还是之前进行洗牌?

opencv - libsvm - 用于多类分类的训练数据格式

machine-learning - scikit、分类列、决策树

Python:循环到两个列表中较短的一个

python - 如何使用Python定义二维数组划分的节号?

python - 如何正确导入测试类以从中继承,而不将其作为测试运行