渋谷で働くSEのブログ

渋谷で働くSEのお粗末なブログです

San JuanitoとTobasのdeep learning:終わりにします

この論文ソースコードを使っていろいろやってました。

GitHub - coreyker/dnn-mgr

で、実は、ソースコードのフォルダの中身を見てみると、 教師あり学習用のソースコード以外にも、autoencoderとか、ほかいろいろなソースコードが含まれていました。

ということで、何か使えるものがないかしら…、と、 いろいろ探ってみました。

utils/plot-conf.py

このpythonファイルは、confusion matrixを作るためのファイルです。

テスト時に、--save_fileモードにすると、txtファイルが生成されますが、

kyosuu1.hatenablog.jp

(テスト時のtxtファイルについてはここを参照してください)

それと、ラベルファイルを使います。

使い方は、以下のようになります。

python plot_conf.py \
    --file /path/to/saved_test_file.txt \
    --labels /path/to/label_file.txt

そうすると、こんな感じでconfusion matrixのpdfファイルが作られます。

f:id:kyosuu1:20160919134249p:plain

例えばこんな感じ。 色分けしてくれていて、PrecisionとF-measure、そして一番右下に正確度まで出力してくれるので、大変わかりやすいです。

./train_classifier_on_dnn_feats.py

こちらは、学習されたモデルのhidden layerから特徴量を抜き出し、その特徴量をsvmかrandom forestで分類してくれるやつです。 元々私はconvolution layerを可視化するツールがないか探していたんですが、うーむ、このソースコードだと、残念ながらconvolutionには対応してくれませんT_T

なので、結局convolution layerの可視化はやめて、とりあえず最も優秀だったfully connected+dropoutの方にこのソースコードをかけて特徴量を出力してみました。

使い方は以下となります。

python train_classifier_on_dnn_feats.py \
    path/to/modelfile.pkl \
    --which_layers 3 \ 
    --aggregate_features \ 
    --classifier random_forest \ 
    --save_file save_file.txt
  • --which_layers: layerは複数指定できます。1, 2, 3あるいは1 2 3のようにします
  • --aggregate_features: オプションです。これを指定すると、フレームの平均とstd…(よくわからん)を求めてくれると書いてあります
  • --classifier: 抜き出してきた特徴量を用いて、random_forestまたはlinear_svmで分類してくれます。何も指定しなければrandom_forestで分類してくれます

まあ、これでとりあえずfully connectedの特徴量は見れるかな、という感じですね。

それでそれで…

とりあえずこの実験はここら辺で終わりとさせていただきます。 次は何しようかな…といろいろ考えてます。 今回使ったデータセットを使って、midiファイルを作成し、magentaにかけてみようかな、とか思いましたが、 正直mp3をmidiにするには相当時間がかかります><

何しましょうかね♪