学习谷歌开源工具Magenta

  • Magenta介绍
  • Magenta下载
    • python安装
      • 1)前置安装
      • 2)下载python3
    • magenta环境安装
    • 使用Magenta
      • 编辑shell脚本
    • 用自己的midi文件进行训练
      • 下载地址
      • 1)midi文件转换成.tfrecord文件
      • 2)生成SequenceExamples
      • 3)训练
      • 4)评估
      • 自动生成音乐
  • 总结

Magenta介绍

Magenta是谷歌开源的一个人工智能工具,使用tensorflow编写,可以自动生成音乐与旋律等。

github:https://github.com/tensorflow/magenta。

操作系统:mac或者ubuntu。

Magenta下载

python安装

1)前置安装

安装python之前,需要安装一些其他东西,防止出错:

sudo apt-get update
sudo apt-get upgrade
sudo apt-get dist-upgrade
sudo apt-get install build-essential python-dev python-setuptools python-pip python-smbus
sudo apt-get install build-essential libncursesw5-dev libgdbm-dev libc6-dev
sudo apt-get install zlib1g-dev libsqlite3-dev tk-dev
sudo apt-get install libssl-dev openssl
sudo apt-get install libffi-dev
sudo apt-get install libbz2-dev
sudo apt-get install libsndfile1

2)下载python3

wget http://www.python.org/ftp/python/3.7.0/Python-3.7.0.tgz
# 解压文件
tar -xvzf Python-3.7.0.tgz
# 进入目录
cd Python-3.7.0
# 配置
./configure --with-ssl
# 编译
make
# 编译安装
sudo make install

下载完成后可以使用python3命令进行测试,如果能顺利进入python环境就安装成功啦!

magenta环境安装

安装完python之后,我们就该进行magenta项目环境的安装了。

# 下载脚本文件
curl https://raw.githubusercontent.com/tensorflow/magenta/master/magenta/tools/magenta-install.sh > /tmp/magenta-install.sh
# 执行脚本文件
bash /tmp/magenta-install.sh

环境安装完毕!!!!

使用Magenta

在一开始,我们先使用官方已经训练好的模型进行生成鼓点。

使用命令下载:

wget -o drum https://http://download.magenta.tensorflow.org/models/drum_kit_rnn.mag

具体链接在github项目中的每个modules文件的.md开头中。

编辑shell脚本

使用命令mkdir创建gen.sh文件,用来生成音乐,内容如下:

BUNDLE_PATH=/root/python_demo/magenta-test/drum_kit_rnn.mag  # 文件地址
CONFIG=drum_kit  # <one of 'one_drum' or 'drum_kit', matching the bundle> 选一个类型
#
drums_rnn_generate --config=${CONFIG} \--bundle_file=${BUNDLE_PATH} \--output_dir=/root/python_demo/magenta-test/music \--num_outputs=10 --num_steps=128 --primer_drums="[(36,)]"

赋予权限后,运行编辑好的脚本文件,将会自动在output_dir目录生成.midi文件,是不是很神奇!虽然并不是很好听(默默吐槽)。

用自己的midi文件进行训练

我们来训练melody类型的~首先通过midishow平台,通过评论拿积分进行下载大量的midi流行音乐,然后上传至ubuntu,进行训练。

下载地址

midishow平台:https://www.midishow.com

1)midi文件转换成.tfrecord文件

训练需要将.midi音乐文件转换成.tfrecord格式的文件,创建并编辑脚本文件,transfer.sh:

# midi文件总目录地址,如/root/....
INPUT_DIRECTORY=<folder containing MIDI and/or MusicXML files. can have child folders.># TFRecord file that will contain NoteSequence protocol buffers.生成目录的地址
SEQUENCES_TFRECORD=/tmp/notesequences.tfrecordconvert_dir_to_note_sequences \--input_dir=$INPUT_DIRECTORY \--output_file=$SEQUENCES_TFRECORD \--recursive

首行写上midi文件总目录,在第二行即SEQUENCES_TFRECORD写上生成文件安放的目录,赋予执行权限,运行。

2)生成SequenceExamples

这一步是配置训练的一系列参数,具体如下:

melody_rnn_create_dataset \
--config=<one of 'basic_rnn', 'mono_rnn', lookback_rnn', or 'attention_rnn'> \
--input=/tmp/notesequences.tfrecord \
--output_dir=/tmp/melody_rnn/sequence_examples \
--eval_ratio=0.10

其中配置我们选attention_rnn,input写上我们之前生成的.tfrecord文件目录,output_dir写上要放置的目录。
将其保存为config.sh。

3)训练

最后一步,我们需要进行模型的训练,创建train.sh,内容如下:

melody_rnn_train \
--config=attention_rnn \
--run_dir=/tmp/melody_rnn/logdir/run1 \
--sequence_example_file=/tmp/melody_rnn/sequence_examples/training_melodies.tfrecord \
--hparams="batch_size=64,rnn_layer_sizes=[64,64]" \
--num_training_steps=20000

run_dir自己配置即可,是运行的目录,然后其他参数仿照上面。训练次数为20000次,赋予权限后再此运行。

4)评估

训练完之后,可以进行模型的评估,具体脚本代码如下:

melody_rnn_train \
--config=attention_rnn \
--run_dir=/tmp/melody_rnn/logdir/run1 \
--sequence_example_file=/tmp/melody_rnn/sequence_examples/eval_melodies.tfrecord \
--hparams="batch_size=64,rnn_layer_sizes=[64,64]" \
--num_training_steps=20000 \
--eval

注意,这里的sequence_example_file是sequence_examples目录下的另一个文件。

可以运行tensorboard去浏览器来观看模型的效果。

tensorboard --logdir=/tmp/melody_rnn/logdir

使用ip:6006进行访问。

自动生成音乐

接下来,就可以使用训练好的模型来进行训练啦!!!!
编辑脚本文件gen.sh:

melody_rnn_generate \
--config=attention_rnn \
--run_dir=/tmp/melody_rnn/logdir/run1 \
--output_dir=/tmp/melody_rnn/generated \
--num_outputs=10 \
--num_steps=128 \
--hparams="batch_size=64,rnn_layer_sizes=[64,64]" \
--primer_melody="[60]"

生成目录自己替换即可。最后就会得到一份midi文件,将其传至本地,就可以听取啦!!!虽然我很想吐槽这个音乐是真的迷。

总结

magenta是个很有趣的tensorflow项目,内置了很多功能,在我的学习的过程中,也遭遇了非常多的坎坷,但也正是因为这些坎坷,才能变强(秃)。

学习谷歌开源工具Magenta相关推荐

  1. 利用谷歌开源工具 sfntly ,修改字体文件制作想要的字体文件

    游戏开发的过程中,总免不了要使用一些字体库. 文章<引用地址> 然而字体库中的字不可能全部需要使用到,一个字体库小则几百K,大则十几M,这无疑增加了客户的流量费用,更增加了游戏的下载时间, ...

  2. 谷歌年度AI技术总结来了!Jeff Dean执笔,附赠27个开源工具和数据大礼包

    杨净 梦晨 发自 凹非寺 量子位 报道 | 公众号 QbitAI Jeff Dean亲笔盘点谷歌AI研究成果,已经成了一年一度的保留节目. 今年也不例外,还是他抽出一部分假期时间完成的. 过去一年,谷 ...

  3. 21个必须知道的机器学习开源工具!

    作者 | SebastianScholl 译者 | 刘静,责编 | 郭芮 出品 | CSDN(ID:CSDNnews) 本文将介绍21种用于机器学习的开源工具. 以下为译文: 你肯定已经了解流行的开源 ...

  4. 21 个必须知道的机器学习开源工具!

    本文将介绍21种用于机器学习的开源工具. 作者 | SebastianScholl 译者 | 刘静,责编 | 郭芮 出品 | CSDN(ID:CSDNnews) 以下为译文: 你肯定已经了解流行的开源 ...

  5. neo4j 机器学习_21个必知的机器学习开源工具,涵盖5大领域

    作者 | 张璐瑶.李林虹 来源 | 读芯术 本文将介绍21个你可能没使用过的机器学习开源工具. · 每个开源工具都为数据科学家处理数据库提供了不同角度. · 本文将重点介绍五种机器学习的工具--面向非 ...

  6. 21个必知的机器学习开源工具,涵盖5大领域

    全文共3744字,预计学习时长7分钟 · 本文将介绍21个你可能没使用过的机器学习开源工具. · 每个开源工具都为数据科学家处理数据库提供了不同角度. · 本文将重点介绍五种机器学习的工具--面向非程 ...

  7. 开源工具Arena,数据科学家再也不用为Kubernetes犯难啦!

    摘要: 为什么要用Kubernetes去难为数据科学家呢? 2018年7月,阿里云将深度学习工具Arena贡献给了开源社区,数据科学家无需学习底层IT资源使用,即可在云端运行深度学习,一分钟内启动深度 ...

  8. 谷歌开源集成学习工具AdaNet:2017年提出的算法终于实现了

    晓查 编译整理 量子位 报道 | 公众号 QbitAI 最近,谷歌在GitHub上发布了用TensorFlow实现的AutoML框架--AdaNet,它改进了集成学习的方法,能以最少的专家干预实现自动 ...

  9. 谷歌推出开源工具DeepVariant,用深度学习识别基因变异

    Root 李林 编译整理 量子位 出品 | 公众号 QbitAI Google今天推出了一个名叫DeepVariant的开源工具,用深度神经网络来从DNA测序数据中快速精确识别碱基变异位点. 学科研究 ...

最新文章

  1. adf检验代码 python_第22期:向量自回归(VAR)模型预测——Python实现
  2. JAVA入门: Annotation
  3. (134)FPGA面试题-介绍冯·诺依曼体系结构和哈佛体系结构
  4. eclipse java import_java – Eclipse:将源代码的import文件夹导入...
  5. python调用摄像头人脸识别代码_OpenCV3-Python人脸识别方法—人脸识别与标记
  6. 网站功能小Demo——学习MD5加密的一点心得
  7. Python 基础——tuple与list、append与extend
  8. plantuml最大宽度_设置TH最小和最大宽度非常缓慢
  9. oracle PL/SQL(procedure language/SQL)程序设计之异常(exception)
  10. 统一建模语言 UML
  11. Programe_Of_Beauty:2.17 数组循环位移
  12. 使用整数除法获得商c语言,C语言练习题答案
  13. Android特效专辑(九)——仿微信雷达搜索好友特效,逻辑清晰实现简单
  14. 迈卡名车茂深度访谈信达名车——宋丙刚:自信坚韧 坚持不懈
  15. iView的table表格购物车的使用案例
  16. php获取蓝奏云直连,最新php蓝奏云直链api接口源代码
  17. 用springboot jpa 报:No property yer found for type OrderMaster错
  18. qrcode实现二维码
  19. ANSYS中关于质量矩阵 刚度矩阵的提取【1】
  20. 【持续更新】阿里云盘扩容码!不限速!博主已经扩容超过3TB!

热门文章

  1. bootstrap collapse 失效
  2. 信捷PLC Modbus_TCP通讯不稳定问题
  3. 6、庆祝六一--全国模拟(四)
  4. LAMP坏境和LNMP环境安装Nagios4.1.1和基本配置
  5. 【遇见Doris】Doris基于Hive表的全局字典设计与实现
  6. Steam toMap的坑
  7. Linux创建连接命令 ln -s创建软连接
  8. 【browserify】一步步教你学会browserify
  9. activeMQ原理
  10. Idea 2020.3 显示Memory Indicator