April 2020
Intermediate to advanced
552 pages
6h 13m
Japanese
前ステップでは、テンソルを使った計算でのバックプロパゲーションについて説明しました。そこで学んだことは次のとおりです。
add関数やsin関数など――は、入出力のデータがスカラであることを想定して順伝播と逆伝播を実装できるこれから私たちは、要素ごとの計算を行わない関数について見ていきます。ここでは、その最初のステップとして、2つの関数を実装します。1つ目は、テンソルの形状を整形するreshape関数です。もう1つは、行列の転置を行うtranspose関数です。この2つの関数は、テンソルの形状を変える関数になります。
それでは、テンソルを整形(リシェイプ)する関数を実装します。まずは前準備として、NumPyのreshape関数の使い方を確認します。これは、np.reshape(x, shape)のように書くことで、xをshapeの形状へと変換します。その使用例を示すと、次のようになります。
importnumpyasnpx=np.array([[1,2,3],[4,5,6]])y=np.reshape(x,(6,))(y)
実行結果
[1, 2, 3, 4, 5, 6]
ここでは、xの形状を(2, 3)から(6,)へと変換しました。テンソルの要素の数は同じですが、その形状だけが変わります。それでは、DeZero版のreshape関数を実装しましょう。ここでの問題は、その逆伝播をどう実装するかということです。
|
要素ごとの計算を行わない関数については、テンソルの形状を考慮すると、逆伝播の実装が明確になります。具体的には、変数のデータと勾配の形状が一致することを確認します。たとえば、 ... |
Read now
Unlock full access