🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Keras

Kerasは、TheanoやTensorFlow/CNTK対応のラッパーライブラリです。DeepLearningの数学的部分を短いコードでネットワークとして表現することが可能。DeepLearningの最新手法を迅速に試すことができます。

深層学習

深層学習は、多数のレイヤのニューラルネットワークによる機械学習手法。人工知能研究の一つでディープラーニングとも呼ばれています。コンピューター自体がデータの潜在的な特徴を汲み取り、効率的で的確な判断を実現することができます。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

1回答

2338閲覧

Kerasのpredict結果が変化しない

saitou_shimeji

総合スコア6

Keras

Kerasは、TheanoやTensorFlow/CNTK対応のラッパーライブラリです。DeepLearningの数学的部分を短いコードでネットワークとして表現することが可能。DeepLearningの最新手法を迅速に試すことができます。

深層学習

深層学習は、多数のレイヤのニューラルネットワークによる機械学習手法。人工知能研究の一つでディープラーニングとも呼ばれています。コンピューター自体がデータの潜在的な特徴を汲み取り、効率的で的確な判断を実現することができます。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2020/12/14 03:18

以下のコードを参考に,自分のデータセットを利用してfinetuningを行っています.
https://github.com/kazuki-hayakawa/fine_tuning
自分のディレクトリ構成に合わせて動くように書き換えをしたのみです.
tensorflow 1.13.1
keras 2.2.4 で動かしています.

学習は正常に完了し,accuracyやlossの推移も順当なものでした.
そこで最もacc_lossの低かったタイミングで生成されたweightを利用して,predictを行いました.
predictの出力結果に関しても一見正常でした.

しかしながら,再起動したりjupyterのカーネルを落としたりしても,predictで出力される結果が全く変わりません.

top1として出力されるclassが変化しないだけでなく,各画像に付与されるスコア(確率的な?)についても変動しません.

自分の中では,predictの結果については,大きく変動しないにしても,predictを実行する度に改めてモデルが予測を行うことで,その出力結果は少しは変動すると理解しておりました.
実際に,これまで試してきた中では変動していたように記憶しておりますが,,,この理解は間違ってますでしょうか?
使用する各weight(モデル)毎に,各テスト画像に対するpredictの結果は決まっていたりするのでしょうか?

私の理解が間違っているのか,テストの仕方が間違っているのか,,,素人丸出しで恐縮ですが,御助言いただけると嬉しいです.

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

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

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

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

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

guest

回答1

0

ベストアンサー

predictはあくまで結果を出力する関数で、モデルを更新する(=学習する)機能はありません。
学習させたい場合は、train.pyのようにfitやfit_generatorを使ってください。

投稿2020/12/14 09:34

編集2020/12/14 09:38
fiveHundred

総合スコア10152

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

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

saitou_shimeji

2020/12/14 10:06

”predictはあくまで結果を出力する関数”というのは理解しているつもりで,またfit_generatorで新たなweightを作り出してそれを読み込んでpredictすれば結果が変わるのは分かっているのですが... 今回は,同じモデル(weight)を読み込んでpredictした場合のことをお聞きしたかったところです. 同じモデルをロードし,同じ画像を提示した場合,予測(predict)の結果は何度やっても全く変化しないということでしょうか??? 例えば犬猫判別モデルを構築したとして,構築されたAというモデル(weight)を使って全く同じ猫の画像('cat.png')を何度も予測(predict)させた場合について モデルAを利用した1回目の予測結果が「'cat.png' は98.75%の確立で猫である」だったとして,2回目以降に関しても,モデルAを利用したpredictの出力は必ず「'cat.png' は98.75%の確立で猫である」となるということでしょうか. (自分の中では,2回目以降,97.6%になったり,95.7%になったりと,同じAというモデルを読み込み,同じ'cat.png'を対象としても,予測を実行する度にその出力(予測結果)は変化するという認識でした) ”fitやfit_generatorを使ってください。”ということですが,これを行うと,新たにBというモデル(weight)を作って,Aとは異なるモデルで予測することになると理解しますがいかがでしょうか? この条件でpredictを行うと,その結果が上記の場合と比較して変化するのは承知しております.
fiveHundred

2020/12/14 10:33

> モデルAを利用した1回目の予測結果が「'cat.png' は98.75%の確立で猫である」だったとして,2回目以降に関しても,モデルAを利用したpredictの出力は必ず「'cat.png' は98.75%の確立で猫である」となるということでしょうか. 基本的に全く変化することはありません。 (例外として、VAEのようにモデルの内部にランダムに決定する要素がある場合や、(stateful=Trueを設定した場合の)LSTMのように前回の結果を使う、という場合は違う結果になる場合があります) > ”fitやfit_generatorを使ってください。”ということですが,これを行うと,新たにBというモデル(weight)を作って,Aとは異なるモデルで予測することになると理解しますがいかがでしょうか? その通りになります。
saitou_shimeji

2020/12/15 02:32

なるほど,大変勉強になりました! ありがとうございます.
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問