20190821のTensorFlowに関する記事は5件です。

GCPのAI platform上のJupyterLabからtensorboardのランチャーが404のときの対処法

3行で

GCPのAI platformでnotebook作って作業してたけどtensorboardを起動しようとすると404になった
trained modelをcloud storageのbucketに入れるようにすればcloud shellで簡単にアクセスできる
cloud shellのweb preview機能を使えばtensorboardにすぐアクセスできる

モチベーション

GCPのnotebookを使って機械学習をしたい。
当然学習の経過も追いたいのでtensorboardを使いたい。
notebookにはデフォルトでhttps://github.com/chaoleili/jupyterlab_tensorboard の拡張機能が入っているようだが、なぜか404になってしまう。(私が悪い気もする)

環境

GCPのAI platformのnotebook
インスタンスタイプはtensorflow 1.14(without GPU)

方針

とりあえずなんでもいいから経過を観察したい。
notebookの機能を使わずにtensorboardにアクセスする。
cloud shellがweb preview機能を持っているので便利そう。

やり方

  1. storageのbucketを作成し、そこに学習のアウトプットを吐かせるようにする。
  2. cloud shellを立ち上げて
tensorboard --logdir=<your bucket> --port=8080

でtensorboardを起動する。(your bucketには学習のアウトプットを吐かせているbucketのアドレスを指定。gs://hogehogeのやつ)
3. cloud shellのweb previewを起動。cloud shellの右上にあるアイコンのこれ。preview on 8080をする。
image.png

ぼやき

実は https://www.coursera.org/learn/end-to-end-ml-tensorflow-gcp このコースを受講してるときにこの問題に遭遇した。
GCPのnotebook、環境構築の手間いらずでいきなりコードのことを考えられて良さがあるなあと思っているけど
どうもドキュメントが少なくてトラブルにどう対応していいかわからん。
tensorboardのランチャーは単に404返すだけで何もエラーのヒントくれないし。

お願い

もっといい方法があったらぜひ教えて下さい!

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

GCP AI platform上のJupyterLabでtensorboardのランチャーが404を吐くときの対処法

3行で

GCPのAI platformでnotebook作って作業してたけどtensorboardを起動しようとすると404になった
trained modelをcloud storageのbucketに入れるようにすればcloud shellで簡単にアクセスできる
cloud shellのweb preview機能を使えばtensorboardにすぐアクセスできる

モチベーション

GCPのnotebookを使って機械学習をしたい。
当然学習の経過も追いたいのでtensorboardを使いたい。
notebookにはデフォルトでhttps://github.com/chaoleili/jupyterlab_tensorboard の拡張機能が入っているようだが、なぜか404になってしまう。(私が悪い気もする)

環境

GCPのAI platformのnotebook
インスタンスタイプはtensorflow 1.14(without GPU)

方針

とりあえずなんでもいいから経過を観察したい。
notebookの機能を使わずにtensorboardにアクセスする。
cloud shellがweb preview機能を持っているので便利そう。

やり方

  1. storageのbucketを作成し、そこに学習のアウトプットを吐かせるようにする。
  2. cloud shellを立ち上げて
tensorboard --logdir=<your bucket> --port=8080

でtensorboardを起動する。(your bucketには学習のアウトプットを吐かせているbucketのアドレスを指定。gs://hogehogeのやつ)
3. cloud shellのweb previewを起動。cloud shellの右上にあるアイコンのこれ。preview on 8080をする。
image.png

ぼやき

実は https://www.coursera.org/learn/end-to-end-ml-tensorflow-gcp このコースを受講してるときにこの問題に遭遇した。
GCPのnotebook、環境構築の手間いらずでいきなりコードのことを考えられて良さがあるなあと思っているけど
どうもドキュメントが少なくてトラブルにどう対応していいかわからん。
tensorboardのランチャーは単に404返すだけで何もエラーのヒントくれないし。

お願い

もっといい方法があったらぜひ教えて下さい!

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

TensorflowでRuntimeError: Missing implementation that supportsが出た場合の対処方法

あまり起こりえないことのようですが、発生した場合の対処方法です。

■環境

Python3.7(Anacondaでインストール)

■エラー内容

retrain.pyを実行時に、以下のエラーが発生する。
RuntimeError: Missing implementation that supports: loader(*(‘C:\\Users\\Alber\\AppData\\Local\\Temp\\tfhub_modules\\xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx’,), **{})

■原因

以下のディレクトリ内が空っぽになっていることで起こっているようです。
‘C:\\Users\\Alber\\AppData\\Local\\Temp\\tfhub_modules\\xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx’

■対処方法

tfhub_modulesフォルダを削除し、再度retrain.pyを実行します。
(tfhub_modulesフォルダは再作成されます)

■参考文献

https://stackoverflow.com/questions/54029556/how-to-fix-runtimeerror-missing-implementation-that-supports-loader-when-cal
https://github.com/tensorflow/hub/issues/212

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

【異常検知】学習データは0個でOK!?

前回の記事では、ディープラーニング x ガウス過程の論文を紹介しました。
今回は、その応用をご紹介します。

image.png

※コード全体はこちらに置きました。

異常検知のプロセス

画像の異常検知を例にします。
ディープラーニングを使う場合は、通常は以下のプロセスが考えられます。

  • 正常な画像を集めてくる。画像の数は多ければ多いほど良い(少なくとも10枚以上)。
  • 必要に応じて、cifar-10などの正常画像と見比べる画像を用意する。
  • 集めた画像で学習実行
  • テストデータで推論実行

ところが、正常な画像がなく、いきなり異常検知を実行する場合はどうでしょうか?
つまり、以下のプロセスです。

  • テスト画像(a)が与えられる
  • (a)で学習実行
  • (a)で推論実行

そんなの無理だよ!と思われるかもしれませんが、前回ご紹介した論文を応用すると
可能になります。ただし、制約も多くあります。

手法

前回紹介した論文(NKN)では、以下のようにマスクした部分を忠実に復元する
ことができました。

image.png

※上の図は論文より引用しています。

異常検知を行うには、まずマスクの位置を変えながら復元画像を生成します。
図にすると以下のとおりです。

sigma2.gif

左図は学習画像、マスクする部分を移動させながら、右図のように
再構成画像をつなぎ合わせていきます。

ダウンロード.png

そして、上図のように元画像と再構成画像の差を比べ、差が大きいところを
異常と認識させます。

結果

繰り返しになりますが、本手法は学習データは不要で、テストデータそのものから
学習していく手法です。

コード全体はこちらに置きました。Colab(GPU)で動くはずです。
NKNの著者のコードを雑にいじっており、かなり余分なコードも存在しています。

  • 落書きその1

image.png

左の図は、真ん中に落書きをしたものです。この画像を使って学習させました。
学習の手法は前述したとおりです。

真ん中の図は再構築画像です。落書きが見事に消えています。
右図は元画像と再構築画像の差をとったものであり、落書きの部分が赤くなっています。

  • 落書きその2

image.png

左の図は、下の方に落書きをしたものです。この画像を使って学習させました。
真ん中の図は再構築画像です。落書きが見事に消えています。

右図は元画像と再構築画像の差をとったものであり、落書きの部分が黄色~オレンジに
着色されています。

もちろん、正常な画像で学習させると、ほとんど青いヒートマップになり、
実際の異常スコア(ピクセルの差)も小さくなります。

制約

この手法は、学習画像が実質不要ということもあり、かなり実戦で使えそう!
と思った方もいらっしゃるかもしれませんが、かなり制約が多いです。

  • 学習時間
    この手法は、テストデータ1枚に対しマスクを移動しながら学習を行います。
    ディープラーニングを使った通常の処理、学習(時間がかかる)→推論(速い)
    という概念は通用しません。学習と推論はセットで行っています。
    従って、リアルタイムの処理は不可能です

  • パターンの規則性
    最初はDAGMのデータを使って試してみましたが、うまくいきませんでした。
    パターンの規則性が、はっきりしているものじゃないとうまく機能しません。

改善策

ただし、パターンの規則性については正規化を行えば改善する可能性が高いです。

正規化について説明する前に、ここでの異常スコアの算出方法を説明します。
異常スコアは以下の式を使っています。

AnomalyScore=max(|x_i-\hat{x}_i|)

ただし、$x_i$は元画像のピクセル値、$\hat{x}_i$は再構築画像のピクセル値です。
ピクセルの差が一番大きいところを異常スコアにしています。

そして、ここでいう正規化とは以下の式で異常スコアを算出することを
意味しています。

NewAnomalyScore=max(|\frac{x_i-\hat{x}_i}{\sigma_i}|)

ただし、$\sigma_i$はガウス過程により推定された標準偏差です。
著者の実装から$\sigma_i$を取り出そうとしましたが、中身が分からず諦めました。
どなたか分かる方が、いらっしゃれば教えてください。

まとめ

  • NKNを使えば、学習データはいらず、テストデータのみで異常検知可能。
  • ただし、複雑なパターンの画像はうまくいかない。改善策はあるが、効果は未知数。
  • NKNによる異常検知は、学習時間が長いため、正常データが10個以上集められるときは「ディープラーニングを使った異常検知」を使うのが無難。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Tensorflow install 備忘録

会社用PC内にJupyterをインストールしている人など、
微妙に権限設定がめんどくさい人向け(自分にも向けて)Tensorflowのインストール時の備忘録です。

1.普通にインストールしようとすると→失敗!

pip install tensorflow

Cannot uninstall 'wrapt'. It is a distutils installed project and thus we cannot accurately determine which files belong to it which would lead to only a partial uninstall.

wraptが悪さをしているようです。

2.pip やcondaをアップデートしようとすると→失敗!

conda update -all
conda update wrapt
conda remove wrapt

PermissionError(13, 'アクセスが拒否されました。')

1.のwraptに関するエラー文をそのまま検索すると「wraptのアップデート」「wraptの削除」で対応する方法の2つが出ましたが上記のエラー結果が出てアクセス権の影響でうまくいきません。

3.既にinstallしてあるものを無視すると→失敗!惜しい

pip install tensorflow --ignored-installed

Could not install packages due to an EnvironmentError: [WinError 5] アクセスが拒否されました。: 'C:\\ProgramData\\Anaconda3\\Lib\\site-packages\\easy_install.py'
Consider using the `--user` option or check the permissions.

既にインストールしてある ものを無視してTensorflowをインストールすると、似たようなエラーが出ましたが「--userを利用してみては?」というレコメンドを貰いました

4.--userオプション付けると→成功!

pip install tensorflow --ignore-installed --user

#成功!
Successfully installed absl-py-0.7.1 astor-0.8.0 gast-0.2.2 google-pasta-0.1.7 grpcio-1.23.0 h5py-2.9.0 keras-applications-1.0.8 keras-preprocessing-1.1.0 markdown-3.1.1 numpy-1.17.0 protobuf-3.9.1 setuptools-41.1.0 six-1.12.0 tensorboard-1.14.0 tensorflow-1.14.0 tensorflow-estimator-1.14.0 termcolor-1.1.0 werkzeug-0.15.5 wheel-0.33.6 wrapt-1.11.2

結論、既にインストールしてあるライブラリを無視してかつ「--user」オプションをつけることでインストールが上手くいきました。

この他にも「pip自体のアップデート」もありましたがアクセス権の影響でうまくいきませんでした。
少ないと思いますが同様な事象で悩んでいる方はぜひお試しください。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む