<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      用Tensorflow讓神經網絡自動創造音樂

      #————————————————————————本文禁止轉載,禁止用于各類講座及ppt中,違者必究————————————————————————# 

        前幾天看到一個有意思的分享,大意是講如何用Tensorflow教神經網絡自動創造音樂。聽起來好好玩有木有!作為一個Coldplay死忠粉,第一想法就是自動生成一個類似Coldplay曲風的音樂,于是,開始跟著Github上的教程(項目的名稱:Project Magenta)一步一步做,弄了三天,最后的生成的音樂在這里(如果有人能告訴我怎么在博客里插入音樂請趕快聯系我!謝謝!)

         https://pan.baidu.com/s/1k827vpJkI6ZSKkJAz9v0oQ

          https://pan.baidu.com/s/1zxripqVM18gw8wxnqgZOrw

        這兩段音樂是我生成的十幾個音樂中聽起來還不錯的,雖然還是有點怪,但是至少有節奏,嘿嘿。下面來說一下是怎么做的:

       

         1.首先下載Project Magenta

         1 git clone https://github.com/tensorflow/magenta.git 

       

        2.安裝需要的工具:

        在這里(https://www.tensorflow.org/versions/r0.9/get_started/os_setup.html)安裝python、bazel和Tensorflow

        我在安裝bazel的時候一直出現“Segmentation fault:11”的錯誤,google了很多解決方法后發現是gcc的安裝版本問題,如果你是mac用戶,下載了xcode,并不代表你安裝了gcc,還必須安裝command line tools,如果安裝成功,在linux里輸入“gcc --version”會出現相應的版本信息,如果沒有,就說明安裝失敗。如果安裝失敗了,用下載好的bazel再輸入“bazel install gcc”,下載完檢測一下gcc -v,如果依然是"Segmentation fault:11"錯誤,恭喜你,遇到和我一樣的錯誤了,google了半天后發現發現了這個:

        so,Apple現在已經不用gcc了,改為LLVM。以后要用"clang、clang++"來代替gcc。如果你輸入gcc -v,顯示"Segmentation fault:11",不妨輸入一下"clang -v",看一下有沒有對應的版本信息。如果有就代表你下載成功了。但是沒有完,還有最后一步,把指向gcc的鏈接改到clang。輸入"which gcc"和"which clang",可以看到你的gcc和clang的位置,然后改一下軟鏈接:

      1 cd /usr/local/bin
      2 sudo mv gcc gcc_OLD
      3 sudo ln -s /usr/bin/clang /usr/local/bin/gcc
      4 gcc -v
      5 Apple LLVM version 6.1.0 (clang-602.0.53) (based on LLVM 3.6.0svn)
      6 Target: x86_64-apple-darwin14.5.0
      7 Thread model: posix

        這樣就大功告成了!哈哈!不要問我為什么花這么大篇幅寫這個看似無關緊要的東西,因為我被這玩意兒折磨了兩天?。∨赀@個才花了三天結果搞個這個居然就花了兩天??!哦,對了,如果你看到這兒不知道bazel是干啥的,簡單的說就是一個編譯工具,相當于pip的intsall。

        現在用bazel來測試一下能不能順利運行:

         1 bazel test //magenta:all 

        

        注:如果全部測試成功,很好。如果出現這個錯誤:

       1 INFO: Found 5 targets and 6 test targets...
       2 INFO: Elapsed time: 0.427s, Critical Path: 0.00s
       3 //magenta:basic_one_hot_encoder_test                            (cached) PASSED in 3.7s
       4 //magenta:convert_midi_dir_to_note_sequences_test               (cached) PASSED in 2.3s
       5 //magenta:melodies_lib_test                                     (cached) PASSED in 3.5s
       6 //magenta:midi_io_test                                          (cached) PASSED in 5.5s
       7 //magenta:note_sequence_io_test                                 (cached) PASSED in 3.5s
       8 //magenta:sequence_to_melodies_test                             (cached) PASSED in 40.2s
       9 
      10 Executed 0 out of 6 tests: 6 tests pass.
      11 There were tests whose specified size is too big. Use the --test_verbose_timeout_warnings command line option to see which ones these are.

        

        恭喜你,又犯了和我同樣的錯誤:)這個錯誤是說測試文件太大了,不能一下子全部測試(我16g的內存還不夠嗎 = =),所以你可以跟我一樣手動測試,以其中一個舉例:

      1 >>>bazel-bin/magenta/basic_one_hot_encoder_test
      2 >>>----------------------------------------------------------------------
      3 Ran 5 tests in 0.074s
      4 
      5 OK

        把上述六個文件依次測試一下,成功請看下一步。

        

        3.創建你的旋律數據集

        和機器學習一樣,我們得先輸入一定的數據讓它去訓練,這里的訓練數據可以自己下載喜歡的音樂,不過Magenta不能直接讀取mp3文件,只能讀取MIDI文件(mp3太大了,一個10M左右的mp3格式音樂可以轉換成100k左右的midi文件)。當然,轉換成midi格式的方法很多,我搜集了一個超好用的網址可以在線轉:Convert Tool

        讀取MIDI文件后,Magenta要把MIDI文件轉化成Sequence文件才能進行訓練

      ##創建旋律數據庫
      MIDI_DIRECTORY=/Users/shelter/magenta/magenta/music/train #這里換成你的文件路徑就行了
      SEQUENCES_TFRECORD=/tmp/notesequences.tfrecord
      
      bazel run //magenta:convert_midi_dir_to_note_sequences -- \
      --midi_dir=$MIDI_DIRECTORY \
      --output_file=$SEQUENCES_TFRECORD \
      --recursive

        

        然后再從這些Sequence序列里提取出旋律:

       1 ##從Sequences中提取旋律
       2 SEQUENCES_TFRECORD=/tmp/notesequences.tfrecord
       3 TRAIN_DATA=/tmp/training_melodies.tfrecord #生成的訓練文件地址
       4 EVAL_DATA=/tmp/evaluation_melodies.tfrecord 
       5 EVAL_RATIO=0.10 ENCODER=basic_one_hot_encoder
       6 bazel run //magenta/models:basic_rnn_create_dataset -- \
       7 --input=$SEQUENCES_TFRECORD \
       8 --train_output=$TRAIN_DATA \
       9 --eval_output=$EVAL_DATA \
      10 --eval_ratio=$EVAL_RATIO \
      11 --encoder=$ENCODER

        ok,這里我們的數據處理就完成了,生成的訓練文件在"/tmp/training_melodies.tfrecord"里

       

        4.訓練神經網絡模型

        訓練數據生成后就可以訓練模型了,這里使用的是RNN模型:

      1 ##訓練神經網絡模型
      2 #首先compile basic_rnn工具
      3 bazel build //magenta/models:basic_rnn_train
      4 
      5 #訓練模型,其中“rnn_layer_size”是神經網絡的層數,可以自定義
      6 ./bazel-bin/magenta/models/basic_rnn_train --experiment_run_dir=/tmp/basic_rnn/run1 --sequence_example_file=$TRAIN_DATA --eval=false --hparams='{"rnn_layer_sizes":[50]}' --num_training_steps=1000

       

        5.生成測試的旋律

        模型那一步非常非常耗時間,Github里設置的是20000次迭代,差點把我的電腦跑燒起來 = =,你可以根據實際硬件情況設置迭代次數。測試旋律和訓練的旋律一樣,都是midi文件,我這里選取的是Katy Perry的Peacock(小黃歌 = =,想看一下用Coldplay的訓練數據在katy Perry上測試的結果是啥)

       1 ##生成旋律
       2 #指定測試旋律的文件地址
       3 PRIMER_PATH=/Users/shelter/magenta/magenta/music/coldplay/KatyPerryPeacock.mid #注意這里是絕對地址,只能指定一首歌
       4 bazel run //magenta/models:basic_rnn_generate -- \
       5 --experiment_run_dir=/tmp/basic_rnn/run1 \
       6 --hparams='{"rnn_layer_sizes":[50]}' \
       7 --primer_midi=$PRIMER_PATH \
       8 --output_dir=/tmp/basic_rnn_3 \
       9 --num_steps=64 \
      10 --num_outputs=16

        你可以用 "bazel test //magenta:all"查看結果,在 http://localhost:6006 里查看可視化結果,包含收斂過程,accuracy等。

        最后生成的旋律就是開頭百度云里的文件了。還有另外一個是用輕音樂測試的,效果也不錯。

       

        總結:

        1.一開始我的訓練次數是20000次,到1000次的時候算法發散了,loss值由本來從20幾萬下降到2000多左右然后突然上升到16000左右,accuracy也下降了,所以就退出了,把迭代次數換成1000次訓練。訓練結束的時候算法還沒有收斂,但是我想快點看到結果,而且電腦跑的太慢了,就直接拿來用了。如果你有GPU或者愿意等個幾天跑程序,可以把迭代次數設置的大一點,等算法收斂后再進行測試。模型訓練的好壞直接決定最后得到的音樂的好聽程度,所以最好等算法收斂后在進行測試。我測試的世界各文件中很多都像亂彈的。

        2.這個項目剛開始不久,有一個論壇專門給大家交流學習的心得以及提問題,點這里。上面的注釋是我遇到的問題,如果遇到了新的問題,可以在論壇上發帖求助。我看到有的人生成的音樂很有那種詭異的哥特風哈哈。

        3.這個項目背后的具體原理我沒有寫,Github上寫的很清楚,可以參考這里

        4.生成后的音樂可以根據自己的需要加上節拍,應該會好聽一點~

       

        總之,現在開始做吧,很有趣的!~

      posted @ 2016-07-12 18:30  Charlotte77  閱讀(30517)  評論(26)    收藏  舉報
      主站蜘蛛池模板: 无码人妻黑人中文字幕| 亚洲av无码之国产精品网址蜜芽 | 久久精品国产福利亚洲av| 天堂网亚洲综合在线| 国产精品午夜福利视频| 国模无吗一区二区二区视频| 中文国产成人精品久久不卡| 在线看免费无码的av天堂| 99RE8这里有精品热视频| 67194熟妇在线观看线路| 亚洲中文字幕无码日韩精品| 亚洲中文字幕精品无人区| 漂亮人妻被修理工侵犯| 精品国偷自产在线视频99| 成人国产亚洲精品天堂av| 亚洲av男人电影天堂热app| 国产精品人成视频免| 狠狠亚洲色一日本高清色| 部精品久久久久久久久| 四虎在线播放亚洲成人| 欧美人禽zozo动人物杂交| 亚洲中文字幕在线无码一区二区| 国产免费播放一区二区三区| A毛片终身免费观看网站| 成 年 人 黄 色 大 片大 全| 欧美丰满熟妇性xxxx| 国产精品揄拍一区二区久久| 国产精品无码午夜福利| 中文字幕免费不卡二区| 亚洲国产成人综合自在线| 成年午夜免费韩国做受视频| 日韩中文字幕综合第二页| 男女激情一区二区三区| 孕妇怀孕高潮潮喷视频孕妇| 亚洲欧美在线观看| 欧美和黑人xxxx猛交视频| 国产综合内射日韩久| 久久人妻国产精品| 国产资源精品中文字幕| 镇巴县| 午夜一区欧美二区高清三区|