ゼロから作るDeep Learning(8日目)
こんにちは、筋肉めがねです。
久しぶりに、朝ジムを楽しんできました。10月下旬は2週間程度ジムに行けなかったのですが、今週から再度ジムに行き始め、ようやく感覚を取り戻しつつあります。そんな僕を勇気づけてくれる論文を見つけました。今年1月にpublishされたこちらの論文です。
Human Skeletal Muscle Possesses an Epigenetic Memory of Hypertrophy | Scientific Reports
内容は通称「マッスルメモリー」と呼ばれる運動の記憶が筋肉の遺伝子に蓄積される、というもの。ある程度の負荷をかけた動作を、例えば3ヶ月など定期的に継続して行うと、その動作にどの筋肉を使うのか、どの筋繊維を増大させる必要があるのか、という情報を筋肉の遺伝子が覚えます。そして、一定期間休養後にトレーニングを再開すると、筋肉の遺伝子に記憶された情報により、トレーニングを開始する当初よりも増して効率良く動作を行う事ができ、そして以前よりも短期間で効率良く筋肥大させる事ができる、というものです。朗報ですね。
それでは、本日も「ゼロから作るDeep Learning」を進めて行きましょう。
前回の記事では、手書き数値画像の分類を行う3層のニューラルネットワークを作り、実際に10,000枚の画像を使って認識精度を検証しました。そして、93.52%の精度で、ニューラルネットワークが画像に載っている数値を正しく判断する、という事を確認しましたね。
本日は、3章の最後、バッチ処理を見ていきます。
バッチ処理っていうのは、ある程度のトランザクションを一度に纏めて行う事ですね。
前回の記事では、 10,000枚の画像を1枚づつニューラルネットワークに入力し、処理していました。今回のバッチ処理では100枚づつ読み込んでいきます。
最初にコードを示しましょう。
前回との違いはbatch_size = 100以降です。前回は1枚の画像のピクセル数である784(28x28)個の入力層に対して、各ピクセルの情報(0から255までの値を取りうる)を入力しておりました。今回は、入力層にもう1次元加えます。それで、100枚の画像を一度に処理するんですね。 そして、出力層でも、前回から1次元加え、[100 x 10]、つまり、100枚の画像それぞれに対して、10個の配列が出力される、というイメージです。10個の配列とは、例えば[0, 0, 1, 0, 0, 0, 0, 0, 0, 0]というものでした。配列の要素は0から数えるので、この場合の解は2でした。
バッチ処理をすることで、高速に処理できる、これが今回の大事なところです。
それでは、本日は以上でございます。
次は4章ですね。