‫そこで､ モデルの予測を可視化することで､ ドッグビジョンモデルがどうなっているのか､ 実際に評価するようになったのです｡
‫このビデオに入る前に､ モデルの保存と再読み込みについて､ 少しチャレンジしてみたいと思います｡
‫面白いのは､ 画像を可視化したことで､ 予測されたラベル､ 予測された確率､
‫真のラベル､ そして予測の上位10位が分かることでしょうか｡
‫モデルの位置を把握するために､ どのように混乱マトリックスを作ればいいのでしょうか？
‫今あるものに戸惑う｡
‫つまり､ 混同行列は予測されたラベルと真のラベルを比較し､
‫モデルがどのラベルを混乱させたかを見るものです｡
‫それは､ あなたへのちょっとした挑戦状､ 課外授業というわけですね｡
‫モデルの保存と読み込みの前にここに入れておこう､ ここに行ってみよう｡
‫課題 我々のモデル､ 予測､ 真のラベルを使って､ どのように混同行列を作るか？
‫だから
‫もし解けたなら､ 必ずDiscordのチャットで共有してください｡ 自分の作品を共有できますし､ 同じように解こうとしている人がいれば助けにもなります｡
‫それはそれとして､ 頑張ってチャレンジしてください｡
‫モデルの保存と再読み込みのための小さなタイトルを作ってみましょう｡
‫さて､ これは参考になりますね｡
‫もちろん､ ここまで来るのに時間がかかったので､ モデルをトレーニングした後に進捗状況を保存しておくのは理にかなっています｡
‫そのためにはどうしたらいいか､ 考えてみよう｡
‫私はモデルを訓練しましたが､ あなたがモデルを共有したい場合にも役に立ちます｡
‫そこで､ 私たちの犬の視力予測能力を誰かに輸出したいと考えたわけです｡
‫それをWebアプリケーションに搭載したいと考えたのです｡
‫CoLabのノートから出す必要があるかもしれませんね｡
‫ということで､ ここではそのようにします｡
‫TensorFlow モデルの保存方法｡
‫だから､ 私ならこうする｡
‫ああ､ あの人は本当に興奮してるんだな｡
‫私のようにね｡
‫私たちと同じように｡
‫モデルの保存と読み込み
‫ここでも､ 読み切ることができました｡
‫でも､ これからやることは､ まずコードを書くだけです｡
‫それから､ もう少し詳しく読みたい方は､ こちらのドキュメントに目を通してみてください｡
‫そこで､ どのモデルでも呼び出せるように､ そのための関数を作成することにします｡
‫そこで､ モデルを保存するための関数を作ります｡
‫そして､ シンプルにdef save model pass itを実行します｡
‫モデル､ サフィックスがないに等しい｡
‫サフィックスの意味はすぐにわかると思います｡
‫そこで､ dog visionのlogディレクトリと同じように､ 新しいフォルダを作成することがあります｡
‫コールドモデルです｡
‫そして､ これからやることは､ ご想像のとおり､ 保存です｡
‫ここにトレーニングのログを残し､ モデルをドッグビジョンに保存しています｡
‫だから､ その1つのプロジェクトフォルダー内にすべてを収めているのです｡
‫プロジェクトの設定にあるものにこだわること｡
‫プロジェクトフォルダを作成します｡
‫つまり､ これはモデルのディレクトリにある指定されたモデルを保存して､ サフィックス文字列を追加するものです｡
‫シンプルで良いですね｡
‫そこで､ ここに行くと､ モデルディレクトリを作成しましょう｡
‫パス名と現在時刻｡
‫先ほど作成したTensorFlowのログコールバックと同じように､ まず最初に現在の時刻でモデルを保存して､
‫実験を追跡できるようにしたいので､ 小さなサフィックスを付けることにします｡
‫ですから､ 私たちのモデルも少しはわかっています｡
‫だから､ モデルフォルダを開いても､ タイムスタンプだけということはないんです｡
‫また､ 何枚の画像でトレーニングされたのかなども知りたいですね｡
‫というわけで､ そういうことになりますね｡
‫model dir equals Ohのパスで､ テンソルボード､ ドライブスラッシュ､ ドッグビジョンスラッシュのモデルと同じように結合し､
‫追加していくのです｡
‫それを現在の時刻と一緒にします｡
‫だからデートタイム｡
‫日付の時間
‫でも､ 今は時間からひもで､ 行くんです｡
‫そうですね｡
‫月または月日｡
‫私たちの
‫月または分秒｡
‫なるほど｡
‫美しい｡
‫しかし､ ここでは､ モデルディレクトリとサフィックスを組み合わせたモデルパスも必要です｡
‫だからモデルder＋ハイフン｡
‫プラスサフィックスプラスドットhファイブ｡
‫さて､ 5とは何かというと､ それは同じ形式のモデルです｡
‫JPEGと同じように､ 単なるファイル指定です｡
‫そして､ ドキュメントに目を通すと､ このあたりにあります｡
‫さあ､ 行こう｡
‫5つです｡
‫これでよしとしよう｡
‫そのため､ 白人がAH5エクステンションを使用した場合｡
‫これでよしとしよう｡
‫その延長線上にあるわけです｡
‫そして､ 私たちは自分たちのためにちょっとした最新情報を印刷したいだけなのです｡
‫モデル2を保存する場合､ 進行中であることを知らせるために､ モデルパス､ ドット､ ドット､ モデルドット保存と進みます｡
‫model to predictと同じように､ モデルに対してsaveというメソッドを呼び出し､ ファイルパスを渡します｡
‫ドキュメントが出てくるかどうか見てみましょう｡
‫これでよしとしよう｡
‫TensorFlow save modelまたはシングルHDフリーファイルにモデルを保存します｡
‫H5というのはそういうことだったんですね｡
‫ということですね｡
‫そして､ モデルパスを見たいので､ モデルパスを返します｡
‫後で使おうと思えば使えますからね｡
‫なるほど｡
‫これで､ モデルを保存する機能ができました｡
‫この間に､ モデルをロードする関数を作っておきます｡
‫なぜなら､ モデルを保存した場合､ それを再び読み込む可能性があるからです｡
‫ですから､ 学習済みのモデルをロードして､ 両方を同時にテストするのは理にかなっています｡
‫学習済みモデルをロードする関数を作成します｡
‫だから､ これは私たちがやっていることと非常に似ていることになるんです｡
‫そこで､ デフロードモデルにする｡
‫モデルパスを渡したい｡
‫だから､ ちょうど､ モデルを保存したようなものです｡
‫そのため､ モデルパスを返します｡
‫モデルをこのファイルパスに保存しました｡ このフォルダのどこかにモデルフォルダを作成します｡
‫そこで､ モデルの読み込みに､ 行ってみたいと思います｡
‫なるほど｡
‫何と呼べばいいのだろう｡
‫指定されたパスから保存されたモデルをロードし､ 印刷することができます｡
‫読み込み中｡
‫保存したモデルをどこから読み込むか｡
‫これは､ 正しいモデルをロードしていることを確認するためのものです｡
‫TF Caraのモデル ドットロードモデルを再度保存して読み込む｡
‫この負荷モデルはこちらでご覧いただけます｡
‫だからロードモデル､ ありです｡
‫重みとオプティマイザを含め､ 全く同じモデルを再作成する｡
‫TensorFlowのハブを使ったので､ 実はここでちょっと特別なことをする必要があります｡
‫だからモデルパス｡
‫カスタムオブジェクト｡
‫ですから､ このドキュメント､ 多くのケアラーや証言者のドキュメントは､ 最もシンプルなユースケースです｡
‫しかし､ 今回は最もシンプルなユースケースではなく､ TensorFlowのハブモデルを使っているので､
‫この小さなカスタムオブジェクトの辞書を渡す必要があります｡
‫だから､ ケアラーズレイヤーは､ 「イレギュラーなレイヤーがありますよ」と伝えるだけでいいんです｡
‫つまり､ 私たちのモデルで今まで見たことのないレイヤーです｡
‫そして､ それだけでいいんです｡
‫つまり､ モデルパスからモデルをロードして､ 「このモデルには､ カスタムの小さな装置があります｡
‫特に｡
‫どこにあるんだ？
‫ここに戻ってくる｡
‫私たちがやってきたことを見てください｡
‫ここは本当に誇っていい｡
‫このハブを見ていると､ レイヤーが怖くなる｡
‫それしかないんです｡
‫そこで､ 従来のキャリアであるTensorFlowのレイヤーではなく､ このような特殊なレイヤーを使っているのです｡
‫つまり､ このロードモデルファンクションに伝えているのは､ このようなことです｡
‫そして､ そのモデルを返したい｡
‫そこで､ 今度は究極のテストです｡
‫ここに書いておこう｡
‫これで､ 学習済みモデルの保存と読み込みを行う関数が揃いました｡
‫確実に動作させよう｡
‫そこで､ モデルを保存することにします｡
‫1000枚の画像でトレーニング｡
‫そこで､ サフィックスの出番となるわけです｡
‫1000枚の画像で学習させたので､ これは1000枚しかないんだということを人に知ってもらいたいし､ 自分自身も1000枚しかないんだということを知りたいわけです｡
‫モデルのサフィックスは1000イメージに相当し､ アトム・オプティマイザのためにアトムを置くことになるだろう｡
‫もし変更したい場合は､ ここに本当に好きな接尾辞をつけることができます｡
‫1000枚の画像 モバイルネット v2 atom.
‫それはそれで､ シンプルでいいのかもしれません｡
‫では､ これがどうなるのか見てみましょう｡
‫また､ これはあくまでコミュニケーションの一環であり､ 100％必要というわけではありませんが､ 誰かと共有したい場合だけでなく､ 自分自身に対してでも､
‫コミュニケーションをとることは非常に良いことだと､ 実際にやってみて感じました｡
‫行ってしまうのです｡
‫モデルディレクトリを見て､ 「どれがどのモデルだ？
‫ああ､ ここに接尾辞があるんだ」と｡
‫そして､ その接尾辞について教えてあげるといいかもしれませんね｡
‫保存中で､ ファイルを作成することができません｡
‫ここで何が起こったのか？
‫あのさぁ...｡
‫まさに思った通りです｡
‫あれを見てください｡
‫何が悪いんだ？
‫クラシック
‫だから､ これら｡
‫私を信じてください｡
‫このようなエラーに遭遇することになります｡
‫これらとリシェイプエラー｡
‫データを正しい形にすることは､ 機械学習のキャリアにおいてずっと悩まされることになる｡
‫プログラマーにとって､ 誤字脱字は最悪の悪夢です｡
‫だから､ ここに行くんです｡
‫上へ上へ｡
‫救われた｡
‫これがモデルへのファイルパスです｡
‫そして､ このモデルディレクトリの中に入ってみましょう｡
‫これでよしとしよう｡
‫そこに我々のセーブしたモデルがある｡
‫で､ ドットエイジ5｡
‫素晴らしい｡
‫それでは､ ここから出て､ ロードモデルをテストしてみましょう｡
‫そこで､ 学習済みモデルをロードする｡
‫そのため､ 私たちがしなければならないことは､ そこに千の画像モデルの長い名前を読みに行くことです｡
‫ただ､ わかりやすくするために
‫そして､ モデルをロードして行く｡
‫ということを返したわけです｡
‫だから､ そこをコピーすればいいんです｡
‫でも､ そんなに時間はかからないはずです｡
‫さて､ ここでおそらくいくつかの警告が出るでしょう｡
‫はい｡
‫では､ これらの警告は､ 何を言っているのでしょうか？
‫第1層を過ぎた入力形状を持たないシーケンシャルモデルは､ 最適化されたエステートを再ロードすることができません｡
‫その結果､ モデルがインスタンス化されます｡
‫かなり長い予告ですね｡
‫でも､ ここまで来て､ 警告を確認したら｡
‫そして､ 上位に食い込んでいると思います｡
‫これでよしとしよう｡
‫このため､ オプティマイザの保存状態に関連するモデルを読み込むと､ 警告が発生する場合があります｡
‫これらの警告や､ このノートブック全体にある同様の警告は､ 時代遅れの使い方をしないようにするためのもので､
‫無視してもかまいません｡
‫そのため､ これらの警告はドキュメントによると無視することができます｡
‫だから､ プリントアウトさせるだけでなく､ 削除してもらえると助かる｡
‫でも｡
‫それはさておき､ 効果があるかどうか､ 見てみましょう｡
‫もし､ それがうまくいけば､ そこにすべてのグレービーがあるのです｡
‫だから､ プリセーブモデルを評価してください｡
‫さて､ 列車モデルに対して呼び出せるもうひとつの関数がevaluateで､ これはデータセットバリデータに渡されます｡
‫それで､ それを実行するのです｡
‫これが保存前のモデルで､ これがロード後のモデルです｡
‫そこで､ 搭載されたモデル機種を評価します｡
‫評価する｡
‫あ､ いや､ もう少しで失敗するところでした｡ そこで自動操縦になり､ イメージモデルドット評価バルデータそうの上のセルの上に入力し始めたのです｡
‫すべてがうまくいけば､ そうなるはずです｡
‫全く同じものを返す｡
‫素晴らしい｡
‫つまり､ これは検証セットでのモデルのパフォーマンスを素早く評価するための評価関数に過ぎません｡
‫そして､ ここでわかるのは､ 損失が1であることです｡ 2607､ これと同じで､ 精度は全く同じです｡
‫そうそう､ そうなんです｡
‫モデルの保存と読み込みの方法｡
‫今すぐ
‫モデルの保存と読み込みを行いました｡
‫今がその時だと思うんです｡
‫そろそろステップアップして､ モデルを育成する時期だと思うんです｡
‫すべてうまくいきました｡
‫それでは､ フルデータセットで1つ訓練してみましょう｡
‫だから､ 覚悟を決めてください｡
‫自分を奮い立たせる｡
‫次の動画でお会いしましょう｡
‫1万枚のフル画像でモデリングに挑戦します｡