Learning』民のための実装攻略ノートです。『ゼロつく1』学習の補助となるように適宜解説を加えています。本と一緒に読んでください。関数やクラスとして実装される処理の塊を細かく分解して、1つずつ処理を確認しながらゆっくりと組んでいきます。この記事は、7.4.3項「Convolutionレイヤの実装」の内容になります。ConvolutionレイヤをPythonで実装します。Convolutionレイヤの実装Convolutionレイヤ(畳み込み演算)の概念的な説明は、7.2節を読んでください。からっぽのしょこ」で確認しました。この項では実装します。・順伝播まずは処理の効率化のため、4次元の入力データとフィルターの重みを2次元(行列)に展開します。これの処理は7.4.2項で実装したim2col()を使います。Convolutionレイヤの順伝播では、2次元に展開した入力データとフィルターの重みの行列の積にバイアスを加えます。im2col()で展開したデータに対して、Affineレイヤの順伝播と同じ計算をします。この処理は前項で確認しました。展開しない場合は、各要素の積の和をとります(7.2.5項)。ついても、基本的な処理はAffineレイヤの逆伝播と同様に求められます。からっぽのしょこ」を確認してください。2次元に展開した入力データと重み(フィルター)、バイアスに関する勾配を、式(5.13)により求めます。こちらは計算結果をcol2im()で4次元に変換して出力します。col2im()についても前項を確認してください。前項で確認した処理をまとめて、Convolutionレイヤを実装します。0)は、転置.Tと同じことです。変数Wの次元数などを明示できます。6]]では動作確認をしておきます。フィルターの重みとバイアスを作成します。5)(3,)バイアスの初期値は0です(1回試すだけだと加える意味がないですが、あくまでCNN実装のための確認作業なので)。Convolutionレイヤのインスタンスを作成します。pad=0)入力データを作成します。横幅をWにすると重みと変数名が被るので、この例では入力サイズに関する変数をinput_とします。7)順伝播メソッドで処理します。3)これが順伝播の処理になります。この出力は次の活性化レイヤの入力になります。次は逆伝播の入力データを作成して、逆伝播メソッドで処理ます。7)逆伝播に必要なパラメータ類はインスタンス変数として保存されているので、逆伝播の処理はこれだけです。以上で畳み込み演算を行うConvolutionレイヤの実装ができました。このレイヤの出力は、活性化レイヤに順伝播します。Learning』オライリー・ジャパン,2016年.おわりに構成の都合で何だか短い記事になってしまいました。この項の内容の半分は1つ前の記事に含まれています。00:04何かおかしな内容があれば、ご指摘いただけるととても嬉しいです。【R】円周の作図5.3:正射影ベクトルの導出【『スタンフォード線形代数入門』のノート】スポンサーリンクはてなブログをはじめよう!anemptyarchiveさんは、はてなブログを使っています。ブログを報告する引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。