比例すると考えることができます。それに対して、可分なカーネルに対する畳み込みでは、関数convolution_separableに以下の2つの三重ループがあります。書くときは、定数倍を無視します)。大きいとき関数convolutionよりconvolution_separableのほうが計算時間が短くなることが予想できます。実際の計算時間それでは、時間計算量が実際の計算時間に及ぼす影響を観察するため、どれくらいの処理時間がかかるのか計測してみます。i7が載っている普通のパソコン上の仮想マシンです。変動させながら、畳み込み処理にかかった時間をIPythonのマジックコマンド%timeで計測します。とき、次のようなコードで処理時間を算出します。[1]*n)結果は以下のようになります。比例していることが観察できます。とき、convolutionの処理時間はおよそ10時間程度かかってしまうのにたいして、convolution_separableの処理時間はたったの2分程度になります。大きくなると処理時間の差も大きくなっていきます。このように、大きいデータを処理するとき、時間計算量を考慮することは重要です。まとめこの記事では、可分なカーネルでの畳み込みの効率的な計算方法と、それによる時間計算量の差について説明しました。可分なカーネルでの畳み込みは、通常の畳み込みよりも高速に計算することができます。コンボリューション行列...畳み込みを画像処理に適用した例が載っています。ツイート#Python#深層学習#画像認識tmtkデータ分析と機械学習とソフトウェア開発をしています。アルゴリズムとデータ構造が好きです。