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で質問させて頂きました。

 

 

国際線で忘れ物をしたときはどうする?日本までの郵送費は?

こんばんは、ロードローラーです。本日は国際線で忘れ物をしたときの対応をまとめます。先に結論を言うとちゃんと日本まで届けてくれました。

他の記事に書きましたが今月はICML@Stockholmへ参加してきました。日本からスウェーデンに向かう場合、直行便ではなくヘルシンキ乗換が多いです。私もヘルシンキ乗換でストックホルムに到着したのですが、そのときに座席のポケットにタブレットを残したまま飛行機を降りてしまったのです。


気付いた時点で航空会社の係員に相談

私の場合、スーツケースを受け取った段階、つまり幸いにも空港を離れる前に気づきました。空港にはだいたい窓口があるので事情説明に行きます。

ただし、すぐには見つかりません。慌ただしく機内入替などがされますし、気づいた乗務員さんが回収して入れ違いとなる場合があります。私の場合も「There are not tablet…」と言われました。

「そんなはずない、ちゃんと探してくださいよ!」という気持ちにもなりますが、今の時点で既にそこにないのは事実。その場は一旦あきらめました。


忘れ物の専用窓口に電話(急ぎ)

私が利用したのはFinnairでしたが、忘れ物専用の問い合わせ窓口があります。結果的にはこちらへ早く連絡したことが、今回無事にタブレットを取り戻せたことに繋がりました。

ただし電話はもちろん英語です、国際電話です。日本の窓口や、日本の代理店に依頼をしようとも考えましたが、日本~ヘルシンキの便ならともかく、ヘルシンキ~ストックホルムの便、つまり発着点どちらも日本でない場合は管轄外とのことでした。

電話相手は慣れている様子で、非常にゆっくり丁寧な英語で話してくれるので安心してください。たぶん僕みたいな人が多いんでしょうね。忘れ物の特徴、便名、座席、連絡先(電話番号とメールアドレス)を尋ねられます


照会には時間がかかる

窓口での電話が終わると受付完了のメールがすぐに届きます。あとは粘り強く待ちましょう。

私の場合は2日ほどたって「もう無理かな…」と思いましたが、3日目で「見つかった!」とメールが来ました。


取りに行くか、郵送してもらうか選択

「指定場所まで受け取りに行くか、自宅に郵送するか、選んでくれ」という趣旨がメールには書いています。ちなみにどっちを選択しても有料です。私の場合はヘルシンキまで取りに行くのは現実的ではなかったのでもちろん郵送を選択。

郵送を選択する場合は「料金を見積もって請求書を発行するのでとりあえず電話くれ」という趣旨の記載があります。また英語で電話せなあかんのかと思いつつTELします。


クレジットカードで郵送費を支払い

銀行振り込みも選べますがクレジット払いの方が楽です。ここが驚きポイントだったのですが「クレジットカードでの支払いを希望する場合はカード番号と有効期限とセキュリティコードを教えてくれ」と言われます

「おいおい悪用しませんよね?」と不安になりますが、つまり代理でクレカ使って支払いを完了させてくれるという親切心です。もちろん相手を見極める必要はありますが、今回はFinnairの窓口で信頼できる相手(勿論)なので、少し不安も残りましたが必要情報を連絡しました。

(追記:その後、もちろん悪用はされていません。念のため報告。)

そのあと、5日ほどで日本に届きました。めでたしめでたし。


気になる郵送費

国際便で届けることになりなんやかんやとややこしくお金がかかります。論より証拠、百聞は一見に如かず、こちらをご覧ください。

は、80EURですとぉ Σ(゚д゚) ナンダッテェーー!?

まぁタブレットは何万もしますし、情報も入っているので、それを取り戻せると思えば支払いをためらう理由は何もありませんが。

 

以上、皆様も忘れ物にはお気を付けください。