時系列データを使ってオートエンコーダー keras
はじめに
時系列でオートエンコーダーを組む練習。ネットで漁っても見当たらなくて(kerasの日本語記事)、kerasのblogでも放置されていた。
Building Autoencoders in Keras
""We won't be demonstrating that one on any specific dataset. ""
→自分でやるしかねぇ
続きを読むメモリに乗り切れないデータをkerasで学習する
- はじめに
- 何を使うか
- 方法1
- 方法2
- 両者の違い(私感)
- やることの概要
- データの説明
- モデルの構築(飛ばしてOK)
- HDDからバッチを読み出す
- 訓練
- 結果
- まとめ
- 追記
はじめに
こんにちは。何が起きたかから言うと、DeepLearningしようとしたらデータが270GB近くあってメモリに乗らなかった。そこで、練習がてら、batchごとにHDDからデータを読み出して、batch学習するコードを書いた。
kerasやpythonをある程度知っている前提で書き進めていく。
何を使うか
公式ドキュメントで検索すると"メモリに載らない大きさのデータを扱うには?"
とある。これによると方法は2つあるらしい。
方法1
model.train_on_batch(x, y)
を使う。
このブログではこちらを試した。
方法2
model.fit_generator(data_generator, samples_per_epoch, epochs)
を使う。
この方法はこちらの記事に解説が書いてあった。
続きを読むGoogle流 資料作成術を読んで
ここで書くことは?
日本実業出版社から出版されている、"Google流 資料作成術"を読んだので、自分が気をつけておく点をまとめておく。
- ここで書くことは?
- コンテキスト(文脈,背景)を理解する
- 心持ち
- 資料を作り始めるまえに
- 表現を選ぶ
- 不必要な要素を取り除く
- 見てほしいところに注意を引きつける
- ストーリーを伝える
- ストーリーは三幕構成で
- 始まり
- 中間
- 終わり
- ストーリーは繰り返す
- 逆ストーリーボード
- ストーリーは三幕構成で
- ケーススタディ
- 濃い背景色を使う場合
- プレゼンの図を配布資料にも使い回すとき
- 最後に
コンテキスト(文脈,背景)を理解する
心持ち
- 説明的分析を見せる場面で探索的分析を見せてはいけない。
- 100パターン(失敗98パターン)のときに100パターン全部見せるのはNG
- 相手が知りたい2パターンだけ具体的に丁寧に説明する
- 誰に何を伝えるか
- 考えて資料を作っていると思うが、一般化したターゲット設定はやめるべき
- 興味を持っているすべての人とか、利害関係者とかはNG
- 相手との関係性を考える。
- まずは相手の信用信頼を勝ち取るほうが先だったりする
- 相手に何をしてほしいか
- 意外と見落としがち
- データを示しておしまいにならないように
- 考えて資料を作っていると思うが、一般化したターゲット設定はやめるべき
- プレゼンの練習
- 各スライドの重要なポイントを書き出す
- 声に出して言いたいことを言う練習、とくにつまずきがちなスライドの移行部分の説明に慣れておくように
- 周りに人にプレゼンを聞いてもらう
以上のことは,誰に→何を→どのようにの順番で決めるのが良いだろう。
続きを読むまたまた、LightGBMのインストールでエラーが出た
事件の発生
LightBGMというライブラリを公式の手順に従ってインストールしようとしたらエラーメッセージが突如現れた。
これのmacOS Apple Clang(9.0 or higher)に従ってインストを行ったらエラーが出た。
どんなエラーがでたか
インストレイションガイドに従って
brew install --HEAD cmake brew install libomp git clone --recursive https://github.com/Microsoft/LightGBM ; cd LightGBM mkdir build ; cd build cmake .. make -j4
ここまでエラーはでなかった。そして
pip install lightgbm
でインストール。いざ、使おうとしたところでエラーが出た。
>>> import lightgbm
Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/Users/{ユーザー名}/.pyenv/versions/anaconda3-5.0.0/lib/python3.6/site-packages/lightgbm/__init__.py", line 8, in <module> 中略 OSError: dlopen(/Users/{ユーザー名}/.pyenv/versions/anaconda3-5.0.0/lib/python3.6/site-packages/lightgbm/lib_lightgbm.so, 6): Library not loaded: /usr/local/opt/gcc/lib/gcc/8/libgomp.1.dylib Referenced from: /Users/{ユーザー名}/.pyenv/versions/anaconda3-5.0.0/lib/python3.6/site-packages/lightgbm/lib_lightgbm.so Reason: image not found
どうやって解決したか
アンインストールしてから再度やってみたりいろいろしたがどうしてもimportができなかったので諦めて他の方法でインストールした。
こちらのInstallation GuideのmacOS GCC/G++のやり方に従って、インストールした
cd LightGBM #gitからクローンしたディレクトリに入ってください。 rm -r build # 上記の失敗で作ったbuildを消しておきます。 #ここからほぼ上記のリンク通り brew install cmake brew install gcc export CXX=g++-8 CC=gcc-8 # 上記のリンクとは異なり、ここを8に変えておかないとエラーが出ます。 mkdir build ; cd build cmake .. make -j4
これで無事にインストールでき、importもできるようになった。
関係あるかわかりませんがpyenvやvirtualenvを使っている場合は、事前にactivateしておくと無難かもしれない。
それでも直らない場合
実は、他のサーバーにインストールしようとしたところまた同じエラーが出てしまった。gcc-7を使ってインストールしたため、
Library not loaded: /usr/local/opt/gcc/lib/gcc/8/libgomp.1.dylib
って怒られるのは当たり前...でも管理者権限がないのでgcc-8をインストールすることもできず。
そこでstack overflowをあさっていたら、
pip install --no-binary :all: lightgbm
でインストールするといいよと記述を見つけた。ので、早速ためしたところ無事importできるようになった。これも一回試すといいかもしれない。
余談
前も別のところでエラー履かれたしスムーズにインストールできるようになってほしい aotamasaki.hatenablog.com
追記
condaを用いているなら、かなり楽にインストールできる
conda install -c conda-forge lightgbm
ハンズオンUMAP
- はじめに
- なぜ、あとからサンプルを布置できると嬉しいのか?
- ドキュメントにそって
- インストール
- データの概要
- 訓練とテストに分割
- 訓練データで空間を学習
- この潜在空間で学習
- テストデータの潜在空間への布置
- テストデータへの汎化性能
- まとめ
はじめに
UMAPという新しい可視化の手法が開発された。
私的に、この手法の利点は大きく2つあると考えている。
- t-SNEよりも高速でありながらt-SNEと同じような可視化の結果が得られる。
- t-SNEと違って、学習済みの空間に、あとから新規のサンプルを布置できる。
特に、2番目について言及している。ブログ記事は日本語では見つからなかった。ので、2番目の強みの紹介がこのブログの目的である。
続きを読むLightGBMのインストールのエラーに戸惑った話
事件の発生
LightBGMというライブラリを公式の手順に従ってインストールしようとしたらエラーメッセージが突如現れた。 github.com
またインストールするときにスムーズに行くように記録を残しておく。
どんなエラーが出たか
$ cmake ..
CMake Error at /usr/local/Cellar/cmake/3.11.4/share/cmake/Modules/CMakeDetermineCCompiler.cmake:48 (message): Could not find compiler set in environment variable CC: gcc-7. Call Stack (most recent call first): CMakeLists.txt:9 (PROJECT) CMake Error: CMAKE_C_COMPILER not set, after EnableLanguage CMake Error: CMAKE_CXX_COMPILER not set, after EnableLanguage -- Configuring incomplete, errors occurred!
gccまわりの設定がうまく行ってないみたいな?
ずいぶん前に別のマシーンにインストールしたときもこれではない別の問題でインストールに苦戦したような気もする…これだからpipだけでインストールできないやつは...
どうやって解決したか
公式の手順
git clone --recursive https://github.com/Microsoft/LightGBM ; cd LightGBM export CXX=g++-7 CC=gcc-7 # replace 7 with version of gcc installed on your machine mkdir build ; cd build cmake .. make -j4
これの2行目を
export CXX=g++-8 CC=gcc-8
に変えることで、無事インストールできた。コメントアウトに# replace 7 with version of gcc installed on your machine
って書いてくれてるし、自分のgccのバージョンに合わせれば平気そう。
2018/07/03現在、下記のコマンドを書き換えた2行目の前に入れておけば、すでに古いgccが入っていても平気なはず…?(未検証)
brew upgrade gcc
追記2018/08/03
別のマシーンでまたまたハマりました。
さらに追記
condaを用いているなら、かなり楽にインストールできる
conda install -c conda-forge lightgbm
Jupyter notebookで変数一覧を常に出す方法
- はじめに
- 変数一覧を出す方法
- おわりに
はじめに
RStudioやMATLABを使ったことのある方ならわかると思うが、今扱っている変数を一望する機能がある。 RStudioならばこんな感じ。
RStudioならGlobal Environmentと書いてあり、MATLABならばWorkspaceと書いてあるやつだ。
jupyter notebookでも%whosと打つと、変数の一覧が表示されるが自動更新はされない。いちいち%whosと打つのはめんどくさい。
めちゃくちゃぐぐると、一応Jupyter notebookでもRStudioなどと同じように変数一覧を出す拡張機能があるようで、あまり知られていないようなので、共有する。