Magenta(Googleの音楽機械学習ライブラリ)のRNNセルはどこにあるのか?
またどの様に書き換えや開発を行うのか?
基本的にMagentaのRNNセルはevents_rnn_graph.pyという共有ファイルの中に記述されています。
GitHubのレポジトリでいうと
の28〜32行目のmake_rnn_cell関数のところです。
def make_rnn_cell(rnn_layer_sizes,
dropout_keep_prob=1.0,
attn_length=0,
base_cell=rnn.BasicLSTMCell,
residual_connections=False):
base_cell=rnn.BasicLSTMCell
のBasicLSTMCellが選択されているRNNセルです。
このRNNセルはTensorFlowのRNNセルクラスですのでTensorFlowのサイトからセルの中身がどんな処理を行うプログラムなのか?確認する事ができます。
tf.compat.v1.nn.rnn_cell.BasicLSTMCellのページはこちら
https://www.tensorflow.org/api_docs/python/tf/compat/v1/nn/rnn_cell/BasicLSTMCell
おそらくLSTMが、音楽生成にはもっとも適していそうなので(当然Magentaの開発者の方々が1番検証されたでしょう)他のセルを試す必要はない様に思えます。
がもし、他のセルを使用したい場合はBasicLSTMCellを他のセルに変えれば良いわけです。
TensorFlowのRNNセルのページはこちらです。
どんなセルがあるか確認できます。
各セルの解説は今回はしません。
また全ての書き換えを実践・検証したわけではないのできるものできないものがあるかもしれませんが、可能なセルについては簡単に書き換えが可能でした。
音楽生成もそれぞれ違いを検証しましたが、すぐにわかる明らかな違いはありませんでした。
しかし、詳細に実践していけば当然違いはあると思います。
また何か発見したら報告したいと思います。