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

以下报错:

pytorch人像识别 pytorch transformerencoder_深度学习


去网上搜了各种方法都不能解决,请教师姐,师姐把当初下数据集的记录发给我,我试了一下师姐用的方法,也不对,但是从中找到了尝试的方向—代码中给的数据集地址是错的,因此更改的数据集地址,但还是报错,

然后尝试直接用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

报错: ![在这里插入图片描述](

pytorch人像识别 pytorch transformerencoder_pytorch人像识别_02


经了解,FullLoader 属性是在pyyaml5.1及以上版本中才有的。

显示我已安装了5.3.1的版本,但是进入python解释器后发现是3.13的

尝试删掉原有版本,下载新版本:

pip3 uninstall pyyaml

报错:

pytorch人像识别 pytorch transformerencoder_python_03


尝试更新版本:

pip install -U PyYAML

报错:

![在这里插入图片描述](

pytorch人像识别 pytorch transformerencoder_CUDA_04


成功解决办法:

pip install --ignore-installed PyYAML

pytorch人像识别 pytorch transformerencoder_python_05


再次输入,输出模型,但是显示class Data has “0” files

![在这里插入图片描述](

pytorch人像识别 pytorch transformerencoder_pytorch人像识别_06

原因:数据集没有加进去,查看配置文件中的train. yml中定义的路径不是我现在存放数据集的路径,因此更改为数据集路径。

pytorch人像识别 pytorch transformerencoder_深度学习_07


重新输入训练命令: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)

pytorch人像识别 pytorch transformerencoder_pytorch_08


pytorch人像识别 pytorch transformerencoder_pytorch人像识别_09


![在这里插入图片描述](

pytorch人像识别 pytorch transformerencoder_CUDA_10


分析:这种问题,是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

pytorch人像识别 pytorch transformerencoder_python_11


因效果不好,batch_size=4,将embedding_dim改为256,

CUDA_VISIBLE_DEVICES=6 python train.py -c config/base.yml config/train_ddp.yml -m model

pytorch人像识别 pytorch transformerencoder_深度学习_12

5.生成
输入命令:CUDA_VISIBLE_DEVICES=4 python generate.py -c config/generate.yml -m model(服务器)
run generate.py -m model -c config/generate.yml
(根据所需,选择配置环境)