‫準備ができたら､ 今度は完全なデータでモデルを訓練する番です｡
‫私たちは､ モデルの予測をチェックし､ 評価し､ 「ああ､ このモデルは確かに何かを学習している｡
‫しかし､ まだ1000枚の画像で訓練しただけなので､ 1万枚以上の画像で訓練する最初の本格的な深層学習モデルのように､
‫フルスケールで試せるか見てみよう」と､ すべてが機能していることを確認しました｡
‫ここで､ 先ほど作った関数の威力が発揮されるわけです｡
‫だから､ 自分たちのために少し見出しをつけよう｡
‫モデルの訓練､ 実は大型犬のモデルの訓練とでも言いましょうか｡
‫そして､ ここに小さなモジモジを置くかもしれません｡
‫フルデータで､ 手に入れる｡
‫犬の画像をたくさん使ってトレーニングしているので､ 大型犬のモデルです｡
‫私は今､ このプロジェクトが大好きです｡
‫カットする｡
‫私たちに必要なのは､ トップが覚えていることです｡
‫そうでなくても､ いいんです｡
‫これから見ていただきます｡
‫Xとy､ len x､ len yがあり､ これが学習データのすべてである｡
‫これがファイル名で､ これがラベルになります｡
‫つまり､ ここに出てきたXは､ 列車内のすべてのファイル名です｡
‫だから､ 最初の多分Xの10､ Xの10を見てもらえばわかると思います｡
‫これらはすべて学習用画像ファイルの名前です｡
‫私たちは､ この前をXトレインに分割し､ 全長は800しかありません｡
‫これでよしとしよう｡
‫そこで､ ランドXトレインに注目してもらうと｡
‫800枚の画像のみ｡
‫そのため､ 現時点では800枚の画像に対してしか学習していません｡
‫また､ その理由を考えてみると､ なぜラベルが各ファイルパスと関連付けられているのか？
‫ブール配列の形で｡
‫では､ フルモデルを学習させるためには何が必要なのだろうか｡
‫基調講演に戻ると､ ワークフローはどうなっているのでしょうか｡
‫データを用意する
‫時制に変える｡
‫そのための機能があるんです｡
‫覚えていますか？
‫データバッチを作成する｡
‫そうでなくても､ 大丈夫です｡
‫そのための機能を作り､ お客様の問題に合わせてモデルを選ぶことができるようにしました｡
‫TensorFlow hubでは､ モデルを作成し､ そのモデルをデータにフィットさせて予測を行うだけでいいんです｡
‫試してみよう
‫では､ データバッチを作成してみましょう｡
‫フルデータで
‫だから､ この機能が本当に役に立つのは､ ノートの後半になるんです｡
‫データイコールの価値があると言ったはずだ｡
‫データバッチを作成する｡
‫これを見てください｡
‫これは､ 上で書いた関数です｡
‫画像 x とラベル y の組のデータ､ バッチを作成する｡
‫データの美しいシャッフル｡
‫トレーニングなのに､ そうでない場合は､ まあ､ ちょっと邪魔になりますね｡
‫テストデータも入力として受け付けるというのは､ 見当たりませんね｡
‫ラベルはありません｡
‫だから大丈夫です｡
‫これはトレーニングデータではありません｡
‫では､ フルデータのデータバッチを作成してみましょう｡
‫では､ フルデータをご覧いただきましょう｡
‫バッチリのデータです｡
‫美しい｡
‫画像､ ラベル付き｡
‫素晴らしい｡
‫データバッチの作成が実際に何をするものなのか､ 気になる方は､
‫このインデックスを見てみましょう｡
‫データバッチの可視化 私たちのデータをバッチに変える｡
‫ここで､ 大きな機能であるデータバッチの作成について説明します｡
‫XとYが必要なのです｡
‫そして､ こんなことが起きています｡
‫これは､ 学習用データセットだからです｡
‫学習データのバッチを作成することで､ XとYを時制に変えることができます｡
‫それをシャッフルして､ 画像処理関数とラベル取得関数をデータにマッピングしています｡
‫そして､ そのデータをバッチサイズ32にするのです｡
‫しかし､ これについては､ すでにビデオで見ています｡
‫もし復習が必要なら､ この関数を作成したビデオに戻って確認してみてください｡
‫では､ 元の場所に戻ってみましょう｡
‫これでデータを取り戻したわけです｡
‫次の一手は？
‫まあ､ モデルが必要なんですけどね｡
‫そこで､ フルモデル・フォー・モデル・イコール・クリエイト・モデルを実行してみましょう｡
‫私が作るものを忘れないでください｡
‫モデル機能がした｡
‫あ､ docstringはダメですね｡
‫ふむ｡
‫まあ､ とにかく実行してみましょう｡
‫確認に行ける｡
‫そこで､ TF Dev image net mobile nat v2を使ってモデルを構築｡
‫だから､ モデルがあるんです｡
‫なるほど｡
‫バッチデータセットがあり､ モデルがある｡
‫さて､ create modelが何をするのか確認したい場合､ どこでモデルを作っているのでしょうか｡
‫ここに降りてくると､ これはモデルの作成機能です｡
‫あ､ docstringがないんだ｡
‫もしかしたら､ それが追加されるかもしれません｡
‫つまり､ 介護モデルを構築する機能を作るわけですね｡
‫TensorFlowハブからダウンロードしたモデルを使って､ 介護者の逐次モデルを作成するために以前に行った手順を実行し､
‫出力が持っているラベルと同じサイズになるように､ 上に密なレイヤーを置きます｡
‫損失関数とオプティマイザーを使ってモデルをコンパイルします｡
‫友人のアダムは丘の下にいて､ 国際坂道下り選手権で坂道を下りる方法を教えてくれる人ですが､
‫測定基準は正確さです｡
‫そして､ 画像の大きさである入力形状を餌にモデルを構築しています｡
‫素晴らしい｡
‫戻ってきてください｡
‫では､ どのように訓練すればよいのでしょうか｡
‫次はどうする？
‫次に何をするか？
‫さて､ いくつかのコールバックを作成しましたので､ 私たちのモデルのためにいくつかの特定のコールバックを作成する必要があるかもしれません｡
‫では､ そうしましょう｡
‫フルモデルコールバックを作ってきましょう｡
‫フルモーダル時制の乗法イコール｡
‫船内にテントを作成する｡
‫戻る
‫これでよしとしよう｡
‫テンソルボードのコールバックを作成するための関数がある｡
‫テンソルボードコールバックは､ 我々のモデルのパフォーマンスを追跡し､ 他のモデルと比較するのに役立つことを思い出してください｡
‫そして､ すべてのデータで学習する場合､ 検証セットは存在しないわけです｡
‫そのため､ 早期停止とコールバックでは､ 検証の精度を監視することができません｡
‫そのため､ 早期停止コールバックには､ モデルの早期停止が必要です｡
‫イコールtfwケアラードットコールバックドット早期停止｡
‫これでよしとしよう｡
‫そして､ モデルが全データで輝いたとき､ 3エポック分の精度が上がらなくなったときに､
‫精度を監視するようにします｡
‫オーバーフィッティングしないように学習を止めさせたり､ オーバーフィッティングし過ぎないように工夫したりします｡
‫だからシフトして入力する｡
‫素晴らしい｡
‫モデルのトレーニングを開始し､ フルモデルをフルデータに適合させるためのレシピがあるように思えます｡
‫では､ どこに行けばいいかというと､ ここです｡
‫フルモデル・ドットフィットを実現できる
‫つまり､ 作成したモデルを呼び出しているだけなのです｡
‫ドットフィットxは全データに等しい｡
‫今､ 検証セットがないのは､ 完全なデータで学習しているからです｡
‫エポック社は100になる｡
‫あるいは､ 前にnum epochsを設定したので､ num epochsだけかもしれませんし､ 今作成した2つのコールバックを持つことになるのです｡
‫これは､ 今までと全く同じ手順で､ より小さなモデルを学習させますが､ 今回はより多くのデータを使用します｡
‫素晴らしい｡
‫で､ 今､ ここにちょっと注意書きを入れて､ まあ､ 口に出すわけです｡
‫だから､ あなたも知っているはずです｡
‫下のセルを実行すると､ ランタイムで使用しているGPUがすべての画像をメモリにロードする必要があるため､
‫最初のエポックに30分､ あるいはもう少し時間がかかるでしょう｡
‫最初のエポックは､ 1000枚の画像に対する小さなモデルで､
‫2､ 3､ 4分かかりました｡
‫1万枚の画像でトレーニング中です｡
‫そのため､ 最初のエポックの全データをロードするのに少し時間がかかるようです｡
‫ですから､ これを実行する前に､ すべてのコードが正しい限り､ 実際にはエラーになる可能性があります｡
‫そのため､ 最初からフルデータで試すのではなく､ すべてがうまくいくように工夫しています｡
‫なぜなら､ 完全な機械学習モデル､ 完全な､ 深層学習モデルをトレーニングするときです｡
‫かなり長い時間､ 何時間もかかることがあります｡
‫ここはかなり恵まれていますね｡
‫これはGPUを使っているので､ 1時間以内にトレーニングします｡
‫でも､ 大きな会社に勤めていると､ 何かトレーニングを1週間くらい放置することも想像できますよね｡
‫ですから､ 実験を設定する際には､ ディープラーニングのモデルを丸一週間トレーニングした後､ それがうまくいっていないことが判明した場合を想像して､
‫確認するようにしたいものです｡
‫そのため､ 上記のような手順を踏んで､ すべてがうまくいっていることを確認したわけです｡
‫ですから､ 大規模なモデルを訓練する前に､ 「よし､ これで大丈夫だ」と確認することができるのです｡
‫充実したトレーニングラウンドをスタートさせよう｡
‫では､ 準備はいいですか？
‫これから1万枚以上の画像を使って､ 初の本格的なディープラーニングモデルを学習させるところです｡
‫ドッグビジョンはまさに現実のものとなりつつあります｡
‫一緒に嫌われよう｡
‫3､ 2､ 1
‫Shiftキーを押しながらEnterキーを押す｡
‫祈っています｡
‫うまくいくといいのですが｡
‫小さなローディングバーが表示され､ エポック数を100に設定したので､ 最大100エポックまでトレーニングを続けることができるはずです｡
‫しかし､ もし改善されなくなったら､ フルモデル・アーリーストップ・コールバックを用意しています｡
‫それがトレーニングアーリーで止まり､ 終了後にコンマを使って結果を確認することができるのです｡
‫だから､ このままキックオフを待つことにします｡
‫それから､ このビデオは30分ほどかかるので､ 一時停止しておきます｡
‫私は少し休憩します､ あなたもそうしてください､ 少し歩いて､ 冷静になってください｡
‫ああ｡
‫もしかしたら､ 30分より少し長くかかるかもしれません｡
‫今回は､ 私のテストが正しくないのでなければ､ 下がるはずです｡
‫でも､ 数秒待って､ モデルが止まったら､ またこのビデオに戻ろう｡
‫そのため､ 一度モデルの早期停止を行うと､ フルモデルの早期停止コールバックが起動しました｡
‫なるほど｡
‫だから､ 必要なだけ走らせようと思っています｡
‫早めの停止とかけ直しのおかげで､ 自分の機種が勝手に止まってくれたら､ また来ます｡
‫だから､ 数秒後にお会いすることになりますが､ 私にとっては数時間後の未来になるわけです｡
‫もしかしたら､ あなたの未来にも数時間あるかもしれませんね｡
‫そして､ 私たちは戻ってきた｡
‫よしっ｡
‫それでは､ 完全に学習されたモデルを見てみましょう｡
‫ご覧の通り､ 私の最初のエポックにはかなり長い時間がかかり､ これを終えたら､
‫実は一瞬で終わってしまいます｡
‫これは､ 最初の､ そしてディープラーニングのニューラルネットワークをトレーニングする通過儀礼のようなものなので､
‫自分をほめてあげる必要があります｡
‫そして､ 長い時間がかかりました｡
‫データサイエンティストや機械学習エンジニアになると､ モデルの訓練中に時間をつぶす方法を考えなければならない｡
‫それで､ これが1回かかったので､ 犬と散歩に行きました｡
‫何秒なんだ？
‫つまり､ 4730を60で割ると
‫78分
‫だから､ 最初のエポックを行うのに1時間強｡
‫ただ､ やはり画像をGPUのメモリに読み込んだ後､ その後の速さをチェックしてみてください｡
‫そして､ このセルが動作しているときに､ おそらくやっておきたいことは､ 以前にもお話ししたはずですが､
‫将来のためにメモしておいてください｡
‫このセルが動作しているので､ その後にセーブモデルを動作させたいのです｡
‫そうすれば､ 一度モデルがトレーニングをやめても
‫早々に停止したおかげで､ ここで呼び戻すことができました｡
‫自動的にモデルの保存機能が呼び出され､ フルモデルがモデルディレクトリに保存されます｡
‫さて､ ここまで来て､ モデルについて見てみましょう｡
‫あ､ そこそこありますよ｡
‫だから､ 例えば､ 2月2日のフルイメージセットモバイルネットで､ 午後5時くらいに始めたとします｡
‫m..
‫だから今回は､ 実は自信がないからダメなんです｡
‫多分､ 日付の時間が間違って取得されているのだと思います｡
‫しかし､ そこはそれ｡
‫それがここで救われた｡
‫私たちは､ 自分たちの道を歩んでいます｡
‫では､ 実際に何がかなりうまくいったのかを見てみましょう｡
‫あれを見てください｡
‫それがトレーニングの精度です｡
‫しかし､ 私はここで少し懐疑的になっています｡
‫なぜかわかるか？
‫検証しているわけではないので｡
‫これはちょうど､ 全トレーニングデータに対するモデルのトレーニングです｡
‫だから､ ここに来よう｡
‫この学習済みファイル内の全ての画像で学習している､ a． k. a. XとY｡
‫しかし､ Kaggleからダウンロードしたテストデータセットをインポートすることは可能です｡
‫さあ､ テストファイルです｡
‫そして､ それらをインポートしてデータの束にし､ モデルを使って予測を行い､ Kaggleに提出することができるのです｡
‫なんて壮大なんでしょう｡
‫では､ モデルが保存されたとします｡
‫それでは､ ロードモデル関数をテストしてみましょう｡
‫つまり､ モデルのロードはモデルのロードに等しいのです｡
‫このパスをここにコピーするだけです｡
‫なるほど｡
‫フルモデルチェンジを積んでいる
‫そして､ この行をここにコピーすると
‫ダニ
‫あ､ そこに置くのはやめましょうね｡
‫ここに文字列として入れたいのです｡
‫それを確認しよう｡
‫素晴らしい｡
‫それは通っていますね｡
‫それが､ 私たちの目指すところです｡
‫TensorFlowのドキュメントでは無視できるとされている警告が､ ここでも表示されているわけです｡
‫了解です｡
‫さて､ 次は何でしょう？
‫さて､ 1万枚以上の画像に対して完全に学習させたモデルができたので､ テストデータセットで予測を行う方法が見えてきたと思います｡
‫では､ 次の動画でやってみましょう｡