Runを支えているのは結局ここ動的にネットワークを変えるまとめdynetドキュメントドキュメント技術論文dynet深層学習の新しいフレームワークです。開発元は「カーネギーメロン大学」で、コンピュータ・サイエンスではトップレベルの研究機関です。ChainerがTensorFlowと完全に差別化できていた武器が、もうアメリカで登場してしまうとは、なんだか悲しい。Runについては以下の記事を。s0sem0y.hatenablog.comChainerよりはモジュールの粒度は低いChainerにはtrainerがあるが、それに相当するものはdynetにはないです。Chainerに比べたら少しコードを書くのが面倒になりそうです。BPTT」のような処理をしたい場合は結局は自分でコードを書くことになります。なると、普段から学習のコード自分で書いとけばよかったとなりかねません。KerasはChainer以上にゴリゴリモジュール化しているため、一見直感的ですが、細かい変更はできない小回りの効かないものとなっています(とは言っても、大抵はそれで十分)。dynetはだいたいTensorFlowと同じくらいの粒度ように見えました(ちゃんと見たら、TensorFlowより便利機能付けられてるかも)。将来的なニューラルネットの流行の変動に対応しやすいのは粒度が低い方です。純粋に大学という研究機関が開発元ですから、新しい構造を試しやすいフレームワークを開発したのでしょう。コードの例xorのデータを分類するニューラルネットワーク中間層は1つで、活性化関数は(なぜか)ハイパボリックタンジェント。出力層の活性化関数はロジスティックシグモイド関数。(出力ユニット数が1の場合は2クラス分類をロジスティックシグモイド関数で行います。seen_instances何かしらのフレームワークを使っている人はなんとなく分かるでしょう。m.add_parameters((8))重み行列もバイアスベクトルも自分で設定するところはTensorFlowに似ていますね。これはまだ使用すると決定しているパラメータではありません。chainerで言えば「__init__」の部分に相当する準備段階。計算グラフの構築を「renew_cg()」で行っています。その後初めてパラメータを計算グラフに渡しています。その下で具体的な計算式を書いております。vecInput(2)この処理は、TensorFlowの「placeholder」に相当する概念でしょうか。ネットワークに与えられるデータの次元を与えています。具体的にフィードフォワードの計算式を書き下す部分は、chainerの__call__に相当する部分と言えるでしょう。結局この処理が呼び出されて初めて計算グラフが構築されるのでした。TensorFlowでは、パラメータの準備をすることとフィードフォワード計算を設定することを行い、それで計算グラフを構築してしまいます。その後変更は不可能です。Runが実現できます。コードのデータの作成部分は飛ばしてしまいます。seen_instances以下のコード、trainerという名のオプティマイザー設定。chainerのtrainerとは全然違いますよ。trainer.update()以下の処理で、入力データとラベルを獲得していますね。trainer.update()多分見慣れたもんですねこのコードは。lossを計算し、逆伝搬して更新。y)この部分を学習のコードの中に入れてしまえば、計算グラフの構築を学習中に変えられることになります。動的にネットワークを変える上記の計算グラフ構築の部分を関数で書いてしまって、学習中に呼び出すようにすればいいわけです。seen_instancesパラメータと訓練データを引数にしておいて、条件毎に関数に渡すパラメータを変えるようにすれば動的に計算グラフを変えられることになります。answer)で、lossを計算する手前で、questionに応じて代入するpWなどを変更するように条件文を書いておけば良さそうです。まとめ明示的に計算グラフの構築やloss計算を書く部分もchainerに比べモジュール粒度が低いと言えるでしょう。下手にモジュール化するよりも、独自の損失関数を準備したい時とかは、この方法で書けるようにしといたほうがいいでしょうね。class使えば、パラメータ準備する部分を__init__で書いて、__call__に計算グラフ構築からロスの計算(今回関数だった部分)を書けばchainerっぽくもなりそう。TensorFlow覇権なのは正直GoogleだからってのとGPU楽ってことくらいになってきましたね。コード見てて思ったけども、chainerが完全に喰われそうな感じです。»プロフィール自分が勉強していく上で学んだことなどをまとめていきたいと思います。ML_deepスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。