VAEの実装の仕方

1,051 views
Skip to first unread message

masa

unread,
Sep 13, 2018, 2:43:44 PM9/13/18
to Neural Network Console Users (JP)
最近NNCを始めました。

サンプルプロジェクトに06_auto_encoderがあります。
これをVAE(Variational Auto Encoder)に変えてみたいと思いますが、どのような関数を使えばよいかわかりません。

実装可能でしょうか?

小林由幸

unread,
Sep 19, 2018, 9:33:09 PM9/19/18
to Neural Network Console Users (JP)
はい、Neural Network ConsoleでVAEは実装可能です。
具体的にはKL divergence lossを算術演算レイヤーなどを用いて組み立てる必要があるものの、素直に実装できます。

Windows版であれば以下のフォルダにサンプルプロジェクトが含まれていますので、ご参照ください。
\samples\sample_project\image_generation\mnist_vae.sdcproj

masa

unread,
Sep 25, 2018, 11:29:02 AM9/25/18
to Neural Network Console Users (JP)
小林様

ありがとうございます、無事できました。 

Andy

unread,
Aug 8, 2019, 1:13:24 AM8/8/19
to Neural Network Console Users (JP)
サンプルプロジェクトのVAEで学習した結果に対し、潜在変数を動かして画像を生成するにはどうすればよいのでしょうか?

小林由幸

unread,
Aug 11, 2019, 10:11:54 PM8/11/19
to Neural Network Console Users (JP)
Neural Network ConsoleのVAEサンプルプロジェクトを元にする場合、

  1. RuntimeネットワークのInputの下のAffine~Affine3を削除
  2. Inputのレイヤー名をInputHなどに変更し、Sizeプロパティを50、Datasetプロパティを例えばzとする
  3. VAEの学習を行う
  4. 50次元の変数zが書かれた評価実行用データセットCSVを用意する。ヘッダはz__0~z__49、各セルには画像生成に用いたい潜在変数の値を記入する
  5. Varidationデータセットに用意したデータセットCSVを指定し、推論を実行する

という手順で、潜在変数hをデータセットCSVとして指定しながら画像を生成させることができます。

データセットCSVファイルを作成しない場合、InputHレイヤーのGenratorをNormalとすることで、潜在変数をガウスノイズとした場合の画像生成を試すことができます。

また、こちらで試したわけではありませんが、サンプルデータセットに含まれる
\samples\sample_dataset\random\50dim_grand_with_zeros.csv
が評価用データセットとして使えるかもしれません。

Yuto Kimura

unread,
May 29, 2020, 3:44:25 AM5/29/20
to Neural Network Console Users (JP)
小林様

VAEのサンプルプロジェクトを参考に、勉強をしている初学者です。
入力画像から潜在変数のみを取得するために必要な手順をご教示いただけますと幸いです。

何卒よろしくお願いいたします。


2019年8月12日月曜日 11時11分54秒 UTC+9 小林由幸:

小林由幸

unread,
Jun 15, 2020, 8:15:23 PM6/15/20
to Neural Network Console Users (JP)
最も簡単にはVAEサンプルプロジェクトを開き、EDITタブ、RuntimeネットワークのAffine_5以降をすべて削除して学習と評価を実行します。
Runtimeネットワークの最後のレイヤーの出力(この場合Affine_3)が評価結果として出力されるかと思います。

新たにVAEを学習するのではなく学習済みのネットワークについて潜在変数を出力したい場合は、
クラウド版の場合、学習結果の右クリックメニュー、Re-editからOpen in EDIT Tab with Weightを選択、
Windows版の場合、学習結果の右クリックメニューからOpen in EDIT Tab with Weightを選択し、
CONFIGタブでMax Epochを0にして学習を実行し(パラメータを更新せずモデルを保存する)、
最後に評価を実行することで同様の結果を得ることができます。
Reply all
Reply to author
Forward
0 new messages