こんにちは､ このチュートリアルにようこそ｡
さて､ 今日はモデルを保存する関数を作ってみましょう｡
それは､ アプリケーションを終了するときにいつでも再利用できるように､ 車の頭脳を保存しておくことです｡
この保存機能により､ モデルを保存した後､ アプリケーションを終了することができます｡
そして､ アプリケーションに戻ると､ 別の関数のおかげで､ この関数の後に作られるload関数で､
学習されたモデルの最後のバージョンをロードすることになります｡
そこで､ この2つの関数をsave関数とload関数とすることにします｡
では､ このチュートリアルでは､ まず保存機能について説明します｡
ここに新たな死が訪れ､ そして救われるわけです｡
そして､ 自ずと一つの主張が出てくるのです｡
その理由は､ 保存しようとしているのは､ ここでいうモデル全体ではなく､ ニューラルネットワークの自分､
そのモデル､ オプティマイザの自分オプティマイザだからです｡ 保存したいのは､ 最後の反復で更新した重みだけです｡
保存したモデルを後で再利用したいときはいつでも､ すでに学習した重みで再生する行動を予測させたいからです｡
ですから､ この最後のバージョンの重みを取る必要があります｡ また､ オプティマイザーの最後のバージョンも､
この重みとつながっているので､ 取る必要があります｡
では､ こうしてみましょう｡
自己があるのだから､ 自己､ そのモデル､ 自己､ そのオプティマイザーを
そして､ この2つのオブジェクトとPythonの辞書を保存することになります｡
そして､ この2つのオブジェクトを保存するために､ torchモジュールのsave関数を使用することにします｡
ここではtorch that saveから始めて､ 括弧の中に辞書の括弧を入力します｡ Pythonの辞書はこのように動作します｡
あなたの識別子となるキーを持ちます｡
だから､ ユニークなんです｡
そして､ それぞれのキーには､ そのキーに与えたい値があります｡
つまり､ 一意な識別子と､ その識別子に与えたい値とのマッピング機能みたいなものです｡
単純な辞書の本を例にとると､ まあ､ キーが単語で､ 値が単語の定義になるわけです｡
まあ､ ここでもそれは同じなんですけどね｡
2つのキーを作り､ 1つは最初に保存したいオブジェクト､ つまりself modelのキーにします｡
そして､ 2つ目の保存したいものの1/2キーは､ セルフドットオプティマイザーです｡
というわけで､ まずは1つ目のキーから見ていきましょう｡
そのキーに名前をつけて､ state underscore dictと呼ぶことにします｡ なぜなら､
state dict関数を使ってモデルを辞書に保存するからです｡
これが最初のキーで､ 次にそのキーに対応する属性値を指定します｡
まあ､ 見ての通り､ こことここにちょっとしたコンを追加しました｡
保存したいオブジェクトを追加します｡
そこで､ 最初に保存したいオブジェクトはセルフモデルです｡
つまり､ このselfモデルをコピーして､ 最初のキーであるselfの値として､ そのモデルを貼り付ければいいわけです｡
そして､ ドット状態アンダースコア日付を追加し､ 最初の1つを追加し､
いくつかの括弧を追加します｡
そして､ オプティマイザーを保存してみましょう｡
そこで､ 辞書に2つ目のキーを追加することにします｡
コンマを追加して､ Enterキーを押せば､ 2つ目のキーができます｡
そこで､ 2つ目のキーは､ まあ､ オプティマイザーとでも呼んでおきましょうか｡
次にColin､ そして保存したいオブジェクトの名前を追加するだけで､ これがself､ これがオプティマイザです｡
そこで､ ここにセルフドットオプティマイザーを追加します｡
そして､ このオプティマイザのパラメータを保存するために､ ここでもドットステートディクショナリーを使用します｡
そして､ すべての重みが保存され､ オプティマイザが保存されたモデルができあがります｡
完璧です｡
そして､ これをすべてファイルに保存します｡
そのために､ save関数に2つ目の引数を追加します｡ この引数は､ モデルとオプティマイザを保存するファイルの名前になります｡
この最初のモジュールの最初のセクションで､ 自動運転車の簡単なデモをお見せしたことを思い出してください｡
あれは､ 適当にアクションをさせただけのデモだったんですね｡
あれはまだ自動運転車ではないのですね｡
しかし､ その後､ モデルを保存するために保存ボタンをクリックしたことを思い出してください｡ これにより､ 最後の脳内ドットPTAファイルが作成され､
これが保存されたバージョンのモデルを含むファイルです｡
そこで､ ここに最後のアンダースコア brain dot PTA を追加して､ モデルとオプティマイザがこの作成されたファイル less
brain に保存されるようにします｡
まだ持っていないんですね｡
しかし､ アプリケーションでモデルを保存すると同時に､ 先ほど追加したコードのおかげで､ このファイルが作成されます｡
わかりました｡
そうして今､ 完璧に｡
モデルを保存する機能､ ニューラルネットワークの重みとオプティマイザを保存することで車の頭脳を保存する機能があるんです｡
それが実は､ クルマの頭脳なのです｡
とても完璧です｡
これで､ 残すところ作成する関数は1つだけとなりました｡
それがロード機能です｡
そしてそれは､ セーブ機能がロード機能なしにはありえないからです｡
保存したものを後から読み込めないのでは､ モデルを保存する意味がありませんよね｡
というわけで､ エキサイティングなデモの前の最後のステップです｡ このセクションの最後のチュートリアルで､
このロード関数を作っていきます｡
では､ この次のチュートリアルでお会いしましょう｡
そしてそれまで､ iを楽しんでください｡