質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
MacOS(OSX)

MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

11213閲覧

kerasにおける画像の再学習

kaitokimura

総合スコア59

MacOS(OSX)

MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

1クリップ

投稿2017/07/16 13:51

MacOS Sierra
ver 10.12.1
Python3.x

KerasでCNNを用いて画像判別しているのですが
機械学習をする際、莫大に時間をかけてしまう場合、何度かに分けて学習すると思うのですが
1度トレーニング画像とバリデーション画像を与え分類機を作成して、さらに新たな画像だけを追加で学習するということは可能でしょうか??

それとも以前学習に用いた画像を再度学習+新たな画像を学習させモデルをロードすることにより以前用いた重みパラメータが用いられるので時間が短縮されるという感じでしょうか??

もし前者が可能ならば、手順としては
model = Sequential()でモデルを作成
model.addで層を追加し一旦
model.compileやmodel.fitを用いて一旦学習させますよね?
model.saveをしてモデルを保存してからどうすればいいでしょうか?

そもそも新しい画像だけを学習させるなんて無理という場合は
model = Sequential()でモデルを作成
model.addで層を追加し一旦
model.compileやmodel.fitを用いて一旦学習させますよね?
model.saveをしてモデルを保存しますよね?
追加から学習させる場合はload_model(saveで作成したファイル名)
でロードするだけで重みパラメータを用いて学習してくれ計算処理が若干早くなる
という考えで良いですか?

わかりにくく大変申し訳ございません。
追加で知りたい情報があればお伝えします。
よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

MasashiKimura

2017/07/16 22:40 編集

質問の内容がわかりにくいのですが、以下のような意味ですか? あるモデルAが「リンゴとバナナ」の分類を学習していたとします。 このモデルに新たに「ナシ」の画像が分類できるモデルA'を学習したいです。
kaitokimura

2017/07/16 23:45 編集

申し訳ございません。違います。モデルAがリンゴの画像とバナナの画像」の分類を学習していたとします。 学習用の画像にはapple1.png,...,apple100.pngという画像ファイルとbanana1.png,...,banana100.pngという画像ファイルをもちいました。このモデルに色々なリンゴとバナナの画像を学習するために新たにapple101.png,...,apple200.pngとbanana101.png,...,banana200.pngを追加で学習させたい。という意図です。ご質問ありがとうございます。 この際apple101.png,...,apple200.pngとbanana101.png,...,banana200.pngのみを学習することは可能なのか apple101.png,...,apple200.pngとbanana101.png,...,banana200.pngは学習することができるがその際、もう一度apple1.png,...,apple100.pngとbanana1.png,...,banana100.pngも学習させなければならず重みパラメータを用いるので前回よりは時間がかからないという方向なのかどちらでしょうか?
guest

回答1

0

ベストアンサー

fine-tuningではなく,モデルの再学習について質問されているとして回答します

model.saveメソッドによってニューラルネットの構造とパラメータの値がセーブされます
そのセーブされたNNの構造やパラメータはload_modelメソッドによって読み込むことができ,読み込んだmodelに対してfitメソッドで再学習することも可能です.この時fitメソッドの引数である initial_epoch を設定すると,ログファイルに学習の記録を残している場合に便利です.

投稿2017/07/16 16:23

odan

総合スコア54

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kaitokimura

2017/07/17 03:32 編集

回答ありがとうございます。モデルの再学習という意図です。 fitメソッドで再学習させる際は新たな画像だけを追加で学習するということは可能でしょうか?? それとも以前学習に用いた画像を再度学習+新たな画像を学習させモデルをロードすることにより以前用いた重みパラメータが用いられるので時間が短縮されるという感じでしょうか?? 意味がわからない場合上記質問者様のコメント欄で例えを説明していますお手数ですがご覧ください。 またlogファイルとは「keras.callbacks.TensorBoard」で作られるものですか? 今回は実装していないのですがメリット次第では導入したいです。 logファイルをつくっておきinitial_epoch を設定するとどのようなことが起きますか?? 公式サイトには前回の学習を再開するのに便利ですとしかかいてなかったので。汗
odan

2017/07/17 04:14

fitメソッドに新たな画像だけからなるX, yを渡せば,新たな画像だけで追加で学習することは可能だと思います > またlogファイルとは「keras.callbacks.TensorBoard」で作られるものですか? `CSVLogger` のことを言っているつもりでした
kaitokimura

2017/07/17 07:32

それが聞けてよかったです。どんどん学習させていきたいと思います。 本当にありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問