【Magenta 项目初探】手把手教你用Tensorflow神经网络创造音乐
偶然在网上看到了一个让我很感兴趣的项目 Magenta,用Tensorflow让神经网络自动创造音乐。
--第一步,安装,工具准备!--
--第二步:开始创作!--
1. 第一个bash:创建旋律数据库
#!/bin/bash##创建旋律数据库MIDI_DIRECTORY=/home/liukun/TensorFlow/magenta/music/train #这里换成你的文件路径就行了SEQUENCES_TFRECORD=/home/liukun/TensorFlow/magenta/music/train/notesequences.tfrecordbazel run //magenta/scripts:convert_midi_dir_to_note_sequences -- \--midi_dir=$MIDI_DIRECTORY \--output_file=$SEQUENCES_TFRECORD \--recursive
2. 第二个bash:提取出训练样本
# TFRecord file containing NoteSequence protocol buffers from convert_midi_dir_to_note_sequences.py.SEQUENCES_TFRECORD=/home/liukun/TensorFlow/magenta/music/train/notesequences.tfrecord# TFRecord file that TensorFlow's SequenceExample protos will be written to. This is the training dataset.TRAIN_DATA=/home/liukun/TensorFlow/magenta/music/train/training_melodies.tfrecord# Optional evaluation dataset. Also, a TFRecord file containing SequenceExample protos.EVAL_DATA=/home/liukun/TensorFlow/magenta/music/eval_melodies.tfrecord# Fraction of input data that will be written to the eval dataset (if eval_output flag is set).EVAL_RATIO=0.10bazel run //magenta/models/basic_rnn:basic_rnn_create_dataset -- \--input=$SEQUENCES_TFRECORD \--train_output=$TRAIN_DATA \--eval_output=$EVAL_DATA \--eval_ratio=$EVAL_RATIO
3. 第三个bash : 训练神经网络模型, 最耗费时间!!!
#首先compile basic_rnn工具bazel build //magenta/models/basic_rnn:basic_rnn_trainTRAIN_DATA=/home/liukun/TensorFlow/magenta/music/train/training_melodies.tfrecord#训练模型,其中“rnn_layer_size”是神经网络的层数,可以自定义/home/liukun/TensorFlow/magenta/bazel-bin/magenta/models/basic_rnn/basic_rnn_train --experiment_run_dir=/home/liukun/TensorFlow/magenta/music --sequence_example_file=$TRAIN_DATA --eval=false --hparams='{"rnn_layer_sizes":[30]}' --num_training_steps=2000
4. 第四个bash:生成新的的旋律!
##生成旋律#指定测试旋律的文件地址PRIMER_PATH=/home/liukun/TensorFlow/magenta/music/origional/Canon.mid#注意这里是绝对地址,只能指定一首歌# num_outputs 指定生成曲目数量bazel run //magenta/models/basic_rnn:basic_rnn_generate -- \--experiment_run_dir=/home/liukun/TensorFlow/magenta/magenta/models \--hparams='{"rnn_layer_sizes":[30]}' \--primer_midi=$PRIMER_PATH \--output_dir=/home/liukun/TensorFlow/magenta/music/generate \--num_steps=64 \--num_outputs=3
.
├── bazel installer
│ ├── bazel
│ └── bazel-0.3.0-installer-linux-x86_64.sh
├── magenta
│ ├── 1.sh
│ ├── 1.sh~
│ ├── 2.sh
│ ├── 2.sh~
│ ├── 3.sh
│ ├── 3.sh~
│ ├── 4.sh
│ ├── 4.sh~
│ ├── bazel-bin -> /home/liukun/.cache/bazel/_bazel_liukun/ebbbbefb206fd0a3aa08c53b60fb3fee/execroot/magenta/bazel-out/local-opt/bin
│ ├── bazel-genfiles -> /home/liukun/.cache/bazel/_bazel_liukun/ebbbbefb206fd0a3aa08c53b60fb3fee/execroot/magenta/bazel-out/local-opt/genfiles
│ ├── bazel-magenta -> /home/liukun/.cache/bazel/_bazel_liukun/ebbbbefb206fd0a3aa08c53b60fb3fee/execroot/magenta
│ ├── bazel-out -> /home/liukun/.cache/bazel/_bazel_liukun/ebbbbefb206fd0a3aa08c53b60fb3fee/execroot/magenta/bazel-out
│ ├── bazel-testlogs -> /home/liukun/.cache/bazel/_bazel_liukun/ebbbbefb206fd0a3aa08c53b60fb3fee/execroot/magenta/bazel-out/local-opt/testlogs
│ ├── __init__.py
│ ├── LICENSE
│ ├── magenta
│ │ ├── 1.sh
│ │ ├── 2.sh~
│ │ ├── BUILD
│ │ ├── __init__.py
│ │ ├── __init__.pyc
│ │ ├── lib
│ │ │ ├── BUILD
│ │ │ ├── __init__.py
│ │ │ ├── __init__.pyc
│ │ │ ├── melodies_lib.py
│ │ │ ├── melodies_lib_test.py
│ │ │ ├── midi_io.py
│ │ │ ├── midi_io.pyc
│ │ │ ├── midi_io_test.py
│ │ │ ├── note_sequence_io.py
│ │ │ ├── note_sequence_io_test.py
│ │ │ ├── sequence_example_lib.py
│ │ │ ├── sequence_to_melodies.py
│ │ │ ├── sequence_to_melodies_test.py
│ │ │ └── tf_lib.py
│ │ ├── models
│ │ │ ├── attention_rnn
│ │ │ │ ├── attention_rnn_create_dataset.py
│ │ │ │ ├── attention_rnn_encoder_decoder.py
│ │ │ │ ├── attention_rnn_generate.py
│ │ │ │ ├── attention_rnn_graph.py
│ │ │ │ ├── attention_rnn_train.py
│ │ │ │ ├── BUILD
│ │ │ │ └── README.md
│ │ │ ├── basic_rnn
│ │ │ │ ├── basic_rnn_create_dataset.py
│ │ │ │ ├── basic_rnn_encoder_decoder.py
│ │ │ │ ├── basic_rnn_encoder_decoder.pyc
│ │ │ │ ├── basic_rnn_generate.py
│ │ │ │ ├── basic_rnn_graph.py
│ │ │ │ ├── basic_rnn_graph.pyc
│ │ │ │ ├── basic_rnn_train.py
│ │ │ │ ├── BUILD
│ │ │ │ ├── README.md
│ │ │ │ └── run_basic_rnn_train.sh
│ │ │ ├── lookback_rnn
│ │ │ │ ├── BUILD
│ │ │ │ ├── lookback_rnn_create_dataset.py
│ │ │ │ ├── lookback_rnn_encoder_decoder.py
│ │ │ │ ├── lookback_rnn_generate.py
│ │ │ │ ├── lookback_rnn_graph.py
│ │ │ │ ├── lookback_rnn_train.py
│ │ │ │ └── README.md
│ │ │ └── shared
│ │ │ ├── BUILD
│ │ │ ├── melody_rnn_create_dataset.py
│ │ │ ├── melody_rnn_generate.py
│ │ │ ├── melody_rnn_train.py
│ │ │ ├── primer.mid
│ │ │ └── README.md
│ │ ├── protobuf
│ │ │ ├── BUILD
│ │ │ └── music.proto
│ │ ├── reviews
│ │ │ ├── assets
│ │ │ │ ├── attention_interpolation.png
│ │ │ │ ├── attention_parameterization.png
│ │ │ │ ├── color-preserving-ny.jpg
│ │ │ │ ├── diagram.png
│ │ │ │ ├── generation.gif
│ │ │ │ ├── mnist_generation.png
│ │ │ │ ├── pixelrnn_figure6.png
│ │ │ │ ├── pixelrnn_full_context.png
│ │ │ │ ├── pixelrnn_masks_A.png
│ │ │ │ ├── pixelrnn_masks_B.png
│ │ │ │ ├── pixelrnn_masks_highlevel.png
│ │ │ │ ├── svhn_generation.png
│ │ │ │ └── tubingen-starry-night.jpg
│ │ │ ├── draw.md
│ │ │ ├── pixelrnn.md
│ │ │ ├── README.md
│ │ │ ├── styletransfer.md
│ │ │ └── summary_generation_sequences.md
│ │ ├── Rossini_barbe(2).mid
│ │ ├── Rossini_barbe(3).mid
│ │ ├── Rossini_barbe.mid
│ │ ├── scripts
│ │ │ ├── BUILD
│ │ │ ├── convert_midi_dir_to_note_sequences.py
│ │ │ └── convert_midi_dir_to_note_sequences_test.py
│ │ └── testdata
│ │ ├── BUILD
│ │ ├── example_complex.mid
│ │ ├── example.mid
│ │ └── notesequences.tfrecord
│ ├── music
│ │ ├── eval_melodies.tfrecord
│ │ ├── generate
│ │ │ ├── 2016-07-16_224233_1.mid
│ │ │ ├── 2016-07-16_224233_2.mid
│ │ │ └── 2016-07-16_224233_3.mid
│ │ ├── origional
│ │ │ └── Canon.mid
│ │ └── train
│ │ ├── basket.mid
│ │ ├── detective.mid
│ │ ├── notesequences.tfrecord
│ │ └── training_melodies.tfrecord
│ ├── pretty_midi.BUILD
│ ├── python_midi.BUILD
│ ├── README.md
│ ├── six.BUILD
│ ├── tools
│ │ └── bazel.rc
│ ├── util
│ │ └── python
│ │ └── BUILD
│ ├── WORKSPACE
│ └── WORKSPACE~
【Magenta 项目初探】手把手教你用Tensorflow神经网络创造音乐的更多相关文章
- Kaggle系列1:手把手教你用tensorflow建立卷积神经网络实现猫狗图像分类
去年研一的时候想做kaggle上的一道题目:猫狗分类,但是苦于对卷积神经网络一直没有很好的认识,现在把这篇文章的内容补上去.(部分代码参考网上的,我改变了卷积神经网络的网络结构,其实主要部分我加了一层 ...
- [ionic开源项目教程] - 手把手教你使用移动跨平台开发框架Ionic开发一个新闻阅读APP
前言 这是一个系列文章,从环境搭建开始讲解,包括网络数据请求,将持续更新到项目完结.实战开发中遇到的各种问题的解决方案,也都将毫无保留的分享给大家. 关注订阅号:TongeBlog ,查看移动端跨平台 ...
- 深度学习入门篇--手把手教你用 TensorFlow 训练模型
欢迎大家前往腾讯云技术社区,获取更多腾讯海量技术实践干货哦~ 作者:付越 导语 Tensorflow在更新1.0版本之后多了很多新功能,其中放出了很多用tf框架写的深度网络结构(https://git ...
- 手把手教你做JavaWeb项目:登录模块
现如今,无论是客户端还是移动端,无论是游戏登陆还是社交平台登陆,无处不在的“登陆”.那么你知道怎么制作吗?今天就为你娓娓道来: 用户登录 在各大信息管理系统中,登录功能是必不可少的,他的作用就是验证用 ...
- 手把手教你使用 Spring Boot 3 开发上线一个前后端分离的生产级系统(一) - 介绍
项目简介 novel 是一套基于时下最新 Java 技术栈 Spring Boot 3 + Vue 3 开发的前后端分离的学习型小说项目,配备详细的项目教程手把手教你从零开始开发上线一个生产级别的 J ...
- TensorFlow 神经网络教程
TensorFlow 是一个用于机器学习应用程序的开源库.它是谷歌大脑的第二代系统,在取代了近源的 DistBelief 之后,被谷歌用于研究和生产应用.TensorFlow 提供了很多种语言接口,包 ...
- 史上最全最详细的环境搭建教程,行百里者手把手教你在windows下搭建Anaconda+pycharm+库文件(TensorFlow,numpy)环境搭建
我是在搭建TensorFlow开发环境的道路上走了很多弯路 掉了很多头发,为了让广大同学们不在受苦受累 下面我将手把手教你学习如特快速搭建python环境 快速导入numpy,PIL,pillow,等 ...
- 手把手教你如何搭建iOS项目基本框架
手把手教你如何搭建iOS项目基本框架 今天我们来谈谈如何搭建框架,框架需要做一些什么. 第一步:找到我们的目标我们的目标是让其他开发人员拿到手后即可写页面,不再需要考虑其他的问题. 第二步:我们需要做 ...
- 菜鸟-手把手教你把Acegi应用到实际项目中(8)-扩展UserDetailsService接口
一个能为DaoAuthenticationProvider提供存取认证库的的类,它必须要实现UserDetailsService接口: public UserDetails loadUserByUse ...
随机推荐
- php 批量更新某字段内容的部分内容 replace(要替换的字段,'被替换的字符串,'替换成的字符串')
要求: 一个字段值: ------预约---- 要将其中 "预约",改成"预定". 但是我开始写的时候,写成了 update 表名 set smscontent ...
- Neutron分析(5)—— neutron-l3-agent中的iptables
一.iptables简介 1.iptables数据包处理流程 以本机为目的的包,由上至下,走左边的路 本机产生的包,从local process开始走左边的路 本机转发的包,由上至下走右边的路 简化流 ...
- POJ1386Play on Words[有向图欧拉路]
Play on Words Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 11846 Accepted: 4050 De ...
- 开发Adobe AIR移动应用程序的考虑事项
http://www.adobe.com/cn/devnet/air/articles/considerations-air-apps-mobile.html Adobe AIR 经过发展演进,已经超 ...
- 【程序员技术练级】熟悉Unix/Linux Shell和常见的命令行(一)文件系统结构和基本操作
作为程序猿,熟悉一些unix/linux命令行是非常必要的,因为部署服务的服务器现在基本上用的都是unix/linux系统,很少在windows上部署服务的. 今天我们就介绍一些在linux上的文件系 ...
- java 22 - 16 多线程之生产者和消费者的问题
生产者和消费者问题的描述图 通过上图,我们可以发现: 生产者和消费者使用的都是同一个资源(肉包子) 所以,当使用线程的时候,这两类的锁也是同一把锁(为了避免出现线程安全问题) 例子:学生信息的录入和获 ...
- QContester
发个福利好了(求不吐槽名字 自己做的软件,(目前)效果大概如上图- 对于我这种比较喜欢参加一些奇怪比赛的人来说还是有用的. 原理-就是在后台开七个浏览器2333 按左边的按钮会开始抓取比赛,进度可以在 ...
- java工程中的.classpathaaaaaaaaaaaaaaaa<转载>
第一部分:classpath是系统的环境变量,就是说JVM加载类的时候要按这个路径下去找,当然这个路径下可以有jar包,那么就是jar包里所有的class. eclipse build path是ec ...
- S2总结笔记
第一章:深入.NET框架 1..NET FrameWork两大组件是什么? 解析:.NET 框架类库(FCL:FrameWork Class Library)和公共语言运行时(CLR:common l ...
- PAT 1014. 福尔摩斯的约会 (20)
大侦探福尔摩斯接到一张奇怪的字条:"我们约会吧! 3485djDkxh4hhGE 2984akDfkkkkggEdsb s&hgsfdk d&Hyscvnm".大侦 ...