0.配置环境
pip install pretty_midi
pip install tensorboardX
pip install progress
1.Repository setting
$ git clone https://github.com/jason9693/MusicTransformer-pytorch.git
$ cd MusicTransformer-pytorch
$ git clone https://github.com/jason9693/midi-neural-processor.git
$ mv midi-neural-processor midi_processor
2.下载midi
下载Performance-RNN中的数据集:首先下载dataset文件夹上传至服务器,可以看到里面包含4个.sh文件
$ sh dataset/script/ecomp_piano_downloader.sh
以下报错:
去网上搜了各种方法都不能解决,请教师姐,师姐把当初下数据集的记录发给我,我试了一下师姐用的方法,也不对,但是从中找到了尝试的方向—代码中给的数据集地址是错的,因此更改的数据集地址,但还是报错,
然后尝试直接用wget+网址下载,下载的文件是asp而不是midi文件;
然后就尝试其他的下载命令+ ecomp_piano_downloader.sh 最后成功下载的命令如下:
bash ecomp_piano_downloader.sh piano-e-Competition
sh dataset/scripts/classic_piano_downloader.sh JSB-Chorales-dataset
3.对数据进行预处理:
CUDA_VISIBLE_DEVICES=4 python preprocess.py piano-e-competition piano-e-competition-pre
4.训练模型:
CUDA_VISIBLE_DEVICES=6 python train.py -c config/base.yml config/train_ddp.yml config/large_dpc.yml -m model
报错: ![在这里插入图片描述](
经了解,FullLoader 属性是在pyyaml5.1及以上版本中才有的。
显示我已安装了5.3.1的版本,但是进入python解释器后发现是3.13的
尝试删掉原有版本,下载新版本:
pip3 uninstall pyyaml
报错:
尝试更新版本:
pip install -U PyYAML
报错:
![在这里插入图片描述](
成功解决办法:
pip install --ignore-installed PyYAML
再次输入,输出模型,但是显示class Data has “0” files
![在这里插入图片描述](
原因:数据集没有加进去,查看配置文件中的train. yml中定义的路径不是我现在存放数据集的路径,因此更改为数据集路径。
重新输入训练命令:CUDA_VISIBLE_DEVICES=4 python train.py -c config/base.yml config/train_ddp.yml -m model
可以开始训练,但是报错:
RuntimeError: CUDA out of memory. Tried to allocate 512.00 MiB (GPU 0; 10.76 GiB total capacity; 9.35 GiB already allocated; 43.44 MiB free; 9.61 GiB reserved in total by PyTorch)
![在这里插入图片描述](
分析:这种问题,是GPU内存不够引起的
方法:将batch_size从8改为2,embedding_dim从512改为256.即使用配置的config/train_ddp.yml更换为config/debug_train.yml
CUDA_VISIBLE_DEVICES=6 python train.py -c config/base.yml config/ debug_train.yml -m model
因效果不好,batch_size=4,将embedding_dim改为256,
CUDA_VISIBLE_DEVICES=6 python train.py -c config/base.yml config/train_ddp.yml -m model
5.生成
输入命令:CUDA_VISIBLE_DEVICES=4 python generate.py -c config/generate.yml -m model(服务器)
run generate.py -m model -c config/generate.yml
(根据所需,选择配置环境)