・直感DeepLearningという書籍がとても良い・4章の「MNISTを偽造するための敵対的なGAN」を実装するのにつまづいた・何とか実装できたので、誰でも実装できるように書籍の内容を補足したこれまで機械学習の初心者として勉強してきて、すごく役立ったなぁと思えるのは「Udemyの各動画」と「直感DeepLearningという書籍」です。Amazon調べ-詳細)Amazon楽天市場Yahooショッピング直感DeepLearningは超初心者向けではないので、まずはUdemy等で勉強して「何もわからない超初心者を脱出して、基礎がわかる初心者」になったら読み進めてみても良いのではないかと思います。私もこの本を読んで機械学習の、特にCNN(畳み込みニューラルネットワーク)について、だいぶ理解を深められました。今は4章のGANに取り組んでいるのですが、この章が「今までの章とは違って書籍通りに読み進めればOK」というわけにはいきませんでした。私はネットで情報を補完しながら何とか実装にたどりつけましたが、途中で諦めてしまう人も出てくるレベルだと思います。今後、直感ディープラーニングを読んで独学する方の為に、メモとして書き残しておきたいと思います!目次Kerasのバージョンは必ず2.1.2keras_adversarialのインストールはgithubからimage_utilsはimportではなく直書きしようgenerator_samplerの関数定義が書籍では抜けているGANの実行完了までにかかる時間はとてつもなく長いですKerasのバージョンは必ず2.1.2書籍にも書かれているとおり、Kerasのバージョンは必ず2.1.2にしておきましょう!もちろん自分の目でエラーを確認してからで良いと思いますが、まずほぼ確実にこのバージョンが原因でのエラーに悩まされると思います。keras==2.1.2です。これを現在インストール済みのKerasをアンインストールなどせずに、そのまま実行すればバージョンを合わすことができます。Notebook等で以下のprint文を実行するとわかります。コードprint(keras.__version__)キュウゾウまずはケラスのバージョンを書籍と同じにしようkeras_adversarialのインストールはgithubからKerasのバージョンを合わせた後、次に解説する箇所が最も難関となるはずです。keras_adversarialとやったら実行エラーが出ると思います。git+https://github.com/bstriner/keras-adversarial.gitのようにインストールする必要があるようです。上記をコマンドプロンプトで打ってもエラーになります。gitやgithubについては、私もこの時までずっと逃げてましたが、ここでようやくきちんと対応することにしました。Windowsをまずインストールする必要があります。インストール方法は画像付きの解説ページがたくさんありますので、そちらをご参照ください。コマンドプロンプトで使えるようにPATHの設定を通すところだけ間違えないようにしておけばOKと思います。無事にインストールが済むと、上記のgitを含んだコマンドから「keras-adversarial.git」をインストールすることができると思います!キュウゾウmacでgitを使う方法はwinよりもハードル低いと思うのでネットでお調べください!image_utilsはimportではなく直書きしよう続いて、書籍P117の同じ箇所です。dim_・・・という宣言もありますが、ここもやや難関です。image_utilsとやるとインストールはできるものの実行時にエラーになります。「image_utils」は上記でインストールできるモノもあるようですが、今回のGANで使われているのは同名の別ファイルのことみたいです。具体的にはkeras-adversarialのexamplesフォルダ内にある「image_utils.py」です。こちらを宣言してあげる必要があります。dim_ordering_fix(x):・・・と直接記述する方法が一番簡単だと思います。dim_・・・」部分はコメントにでもして、上記のように直接コードを書いてしまいましょう。generator_samplerの関数定義が書籍では抜けている私が持っている直感ディープラーニングでは「generator_sampler」の関数定義部分がごっそりと漏れています。実行時にエラーになります。funをご自身で定義しましょう!上記のお手本がどこに書かれているかというと、「image_utils.py」と同じく、keras-adversarial>examples>example_gan_convolutional.pyに原本のプログラムが置かれています。GANの実行完了までにかかる時間はとてつもなく長いです書籍の「直感ディープラーニング」の内容に、ここまで修正を加えてようやくとエラーなしで実行ができました!実行が始まると1エポック終わるごとに、「gan_convolutional」というフォルダ内に上記のような画像が生成されているはずです。1エポック目まずはGANが1エポック終了時に生成した画像です。「これは何でしょう?」と聞かれたら数字と答えるとは思いますが、まだ形を成していない箇所も多いですよね。0は簡単なのか初回から形ができている箇所も多いです。続いて70エポック終了時に生成された画像です。完成形に近いですよね。見ると、3、5、8、9の生成に苦戦している傾向があります。今回はMNISTの数字画像を学習して、そのまま同じものをGANで生成していますが、ここから発展させるとAの特徴とBの特徴を組み合わせたような新しい画像が作れたりするようです。個人的にGANへの興味が強いので、しばらくGANの研究を進めていきたいなと考えております。実行終了までに長い時間がかかりましたGANのような画像を生成する機械学習は、「とんでもなく長い時間とコンピュータの容量を食う」ということを、今回身を持って体験しました。ちなみにどれくらい時間がかかったかというと、1エポック終わるのに約1時間です。100エポック回すプログラムだったので1日ずっと動かしてようやく1/4の進捗で、全て終わるまでに4日もかかる計算となります。Notebookにカーネルエラーが起こってしまい、途中終了となってしまいました。長い時間がかかってしまったのは私が使っているのが普通のWindowsパソコン(CPU)ということもあります。※普通に購入したPCはほぼCPUですなので本格的にGANをやるならGPUマシンの必要性を強く感じました!キュウゾウ可能性が大きく魅力的なだけにGANの道はなかなかに険しそうです!今後もがんばっていきます。:40代から始めるプログラミングAIを使った超サイヤ人判別機2!今度はUdemyで機械学習の動画を買って自分でプログラムを書いてみたAIは超サイヤ人の各形態を判別できるか?TensorFlowを使ったらプログラムを1行も書かずにできた!アイデミープレミアムプランのオンライン無料相談会を受けてみた!(E資格にも対応)この記事を書いた人キュウゾウ40代駆け出しAIエンジニア40代から未経験でPythonと機械学習の勉強を始めた駆け出しのAIエンジニア。【中学受験】イライラでもう限界!ママのストレス対策に徹底的に取り組んでみた。新築一戸建(マイホーム)購入時に勉強不足で数千万の後悔をしそうになった話。