Pythonでテキストを1行ずつ読み込む

なんかいっつもググってる気がするのでメモしておく

以上

ValueError: An operation has `None` for gradient. Please make sure that all of your ops have a gradient defined (i.e. are differentiable). Common ops without gradient: K.argmax, K.round, K.eval.

Q.「kerasで次のErrorがでるときの対処」

A.「原因はlossを計算するときに通過していないlayerが存在すること」

特に分岐型のネットワークを組んだときに発生しやすいです。Classificationタスクのニューラスネットワークを組んで、自己教示学習やAutoencoderで中間層を事前に学習するときに、classificationのlossを設定していないとClassification部分で「勾配が計算できません!」と怒られるわけです。

とはいっても、事前学習のときにはClassification部分を学習せさたくないのどうするか?

こんなときはloss-weightをゼロにしたり、常にゼロをreturnするダミーのloss関数を用意しておきましょう。

How to Display image as grayscale using matplotlib ??

UserWarning: Discrepancy between trainable weights and collected trainable weights, did you set `model.trainable` without calling `model.compile` after ? ‘Discrepancy between trainable weights and collected trainable’

 

UserWarning: Discrepancy between trainable weights and collected trainable weights, did you set model.trainable without calling model.compile after ? 'Discrepancy between trainable weights and collected trainable'

 

Solution: You should define layers before define models, and setting ‘trainable’ each time

kerasで複数の出力とLOSS関数を持つモデルを生成

ClassificationだったりReconstructionだたり1つのモデルで2つ以上の出力やLOSS関数を適応したモデルが近年は増えてきました。となると次のような実装が必要になってきます。

・1つのモデルで複数の値を出力したい

・モデルの複数出力に異なるLOSS関数を設けたい

 

Kerasだと簡単に実装できます。

XREAサーバのSSL化

 

条件

  • XREAサーバを利用中
  • VALUE-DOMAINで独自ドメインを登録済
  • WordPressを使用

 

設定その1

  • XREA.COMの旧コンパネのメニューから「ドメインウェブ」を開く
  • Mainに「blank」、SSL用ドメインのSub6に独自ドメインを設定(私の場合は「r2d.info」)
  • 「すべてのドメインでAレコードのチェックを行わない(強制設定)」のチェックを外す
  • 「ドメイン設定」

 

設定その2

  • XREA.COMの新コンパネのメニューから「サイト設定」を開く
  • 独自ドメインの方で「サイト設定の変更」
  • 同期設定⇒「する」
  • SSL⇒「無料SSL」
  • 「サイト設定を変更する」
  • 20分ほど待つ

 

最後に、WordPressプラグインのReally Simple SSLをインストールして有効化すれば完了です

ICML2018読み会に参加しました

DeNA主催のICML2018読み会に参加してきました(https://connpass.com/event/92705/

感想を3行でまとめると

・GANが大人気

・NAS(neural architecture search)も人気

・パラメータ黒魔術な研究がちょいちょいある


渋谷ヒカリエのDeNA様のオフィスで開催

 


特に気になった発表が2つ、1つ目はコチラ

Learning Semantic Representations for Unsupervised Domain Adaptation

 

Domain Adaptationの手法で、Source-DomainのClassificationのLOSSや、抽出した特徴量に対するAdversarial Lossなどを用いるあたりは従来通りですが、異なるドメインの同じクラス同士で重心が似通うようにLOSS関数を追加した点がキーアイデアです。

が、各LOSSについて学習する順番や、学習する量など、ハイパーパラメータがむっちゃ重要なのでは?と思って質問してみたら、やはり想像通りというか、再現実装をしているけども思い通りには行っていないとのこと。

やはりちょっと黒魔術の香りがしますね。

あと、重心を近づけるという話でしたが、クラス数が多くなると提案手法の有効性が弱まるのではと思いました。これについてもディスカッションしましたが、論文では明確な実験検証は特になかったのでクローズ。

 

 


もう1件がコチラ

Efficient Neural Architecture Search via Parameters Sharing

 

Neural Networkを生成するNeural Networkの話ですね。もともとはNeural Architecture Search with reinforcement learning(NAS)という手法で、複数種類の異なる構造を持つネットワークを量産してはどの構造が最適なのか探索していくという手法で、計算時間が膨大過ぎて、それを解消する方向で検証が進んできたというものです。

NASについてはコチラに自分でまとめた資料があります、奇しくもちょうど私も勉強中でした。。。

 

これ、Controllerについて大きな誤解をしていたんですが、INPUTは無しで、学習可能なパラメータとして用意されているんですね。

そしてネットワーク構造を決める確率分布がLSTMから決定論的に算出されて、算出された分布から確率論的にネットワークを量産するという仕組みでした。

私はてっきりGANのようにNoiseをINPUTするものとばかり…

なぜ入力をランダムにするのではなく、確率分布に基づいてネットワークを量産するのかというと、後者の方が学習した結果「コレがよさそうだ」と思われる構造を中心に、近い構造を持つ亜種が量産されるからです。ランダムに生成して期待外れのネットワークが生成されるよりも遥かに探索が効率的です。

 

 

こういう質疑応答ができるのが勉強会のありがたいところですね。「聞くは一時の恥聞かぬは一生の恥」です。質問してよかった。

 


普段は慣れない音声合成の研究論文も紹介して頂き、後から気になった点をTwitterで質問させて頂きました。