久々に投稿します!1日1記事はなかなかできないけれど。とにかく続ける。
転移学習って?
既存の構築済みモデルの不足部分を目的に応じて再学習し、利用する事を転移学習というらしい。
確かに一からモデル構築するのは大変手間がかかります。
既存の構築済みモデルを再学習させて利用する方法は
・工数の節約、
・時間の節約、
・車輪の再発明の防止
に繋がります。
機械学習の理論を座学でやってばかりいても力がつかないし、理解したことにもならないので
実際にモデル学習させてみて結果を確認しながら勉強中。
(それでも理論と実践のがうまくまだ噛み合っておりません)
コードを正しく打てばニューラルネットワークはちゃんと繋がって動きますね。
(良い勉強方法があれば情報ください)
参考にしている書籍で学習するために画像を取得する部分は特に記載はなく。
自分でFlickrから自動取得するするコードを物色しそれを利用しました。(こちらのコードについては別途記事を投稿予定)
学習用のファイルはgoogle driveの下記のような階層構造にしています。
img └── shrine_temple ├── test │ └── unknown ←モデル評価用の画像を置く ├── train │ ├── shrine ←訓練用の神社画像を置く │ └── temple ←訓練用の寺社画像を置く └── validation ├── shrine ←テスト検証用の神社画像を置く └── temple ←テスト検証用の寺社画像を置く
サンプルコードではこの階層に存在する画像ファイルを読み込んで学習させています。
訓練用データ:テスト検証用のデータの比率は8:2が理想。
ご自身のgoogle drive環境に合わせて書き換えてください。
コードの実行環境
コードの実行環境はGoogle colaboratoryを使っています。
この実行環境は無料で利用でき(一応いくつか制限があるようです)、AWSのようにうっかりしてサービスを起動しっぱなしで課金されるようなことはありません。
安心して今のところは利用できます。
あれこれ自前で開発環境を構築するのも大変ですので、色々試すにはcolaboratoryは最適な環境と言えます。
一つ気をつける点はcolaboratoryのjupyterはランタイム実行なので終了するときに
インストールしたモジュールやコピーしたファイルは消えます。
予めgoogle driveなどのアカウントを作成し、そこへファイルを保存するようにして下さい。
dockerでも環境構築を作れる時代ですから、本格的な開発はdockerで開発環境構築後に取り組めば良いと考えます。
コードサンプル
コードサンプルを晒します。僕と同じように機械学習を勉強中の方々の参考になれば幸いです。
参考文献:現場で使える!TensorFlow開発入門 翔泳社