タグ付けされた質問 「convolution」


4
Tensorflow Strides引数
tf.nn.avg_pool、tf.nn.max_pool、tf.nn.conv2dのストライド引数を理解しようとしています。 ドキュメントは繰り返し言います strides:長さが4以上の整数のリスト。入力テンソルの各次元のスライディングウィンドウのストライド。 私の質問は: 4以上の整数のそれぞれは何を表していますか? なぜconvnetに対してstrides [0] = strides [3] = 1にする必要があるのですか? で、この例で、私たちは見ますtf.reshape(_X,shape=[-1, 28, 28, 1])。なぜ-1? 悲しいことに、-1を使用して再形成するためのドキュメントの例は、このシナリオにうまく変換できません。

1
ND畳み込み逆プログラム
私の教育では、畳み込みニューラルネットワークにN次元畳み込み層を実装しようとしています。 バックプロパゲーション機能を実装したいのですが。しかし、そのための最も効率的な方法はわかりません。 現在、私は以下を使用signal.fftconvolveしています: 転送ステップでは、フィルターを畳み込み、カーネルがすべてのフィルターを介して転送します。 バックプロパゲーションステップでは、派生物(FlipAllAxes関数ですべての次元で反転)を配列(https://jefkine.com/general/2016/09/05/backpropagation-in-convolutional-neural-networks/)で畳み込みます。すべてのフィルターとそれらを合計します。私が取る出力は、各フィルターの各導関数で畳み込まれた各画像の合計です。 私は、デリバティブをどのように畳み込むかについて特に混乱しています。以下のクラスを使用してバックプロパゲートすると、ウェイトのサイズが急激に増加します。 微分と出力およびフィルターの畳み込みをプログラムする正しい方法は何ですか? 編集: この論文(FFTによるたたみ込みネットワークの高速トレーニング)によると、これは私がしたいことを正確に実行しようとするものです。 前のレイヤーの導関数は、現在のレイヤーの導関数と重みの畳み込みによって与えられます。 dL / dy_f = dL / dx * w_f ^ T 重みの導関数は、導関数と元の入力の畳み込みの区分的合計です。 dL / dy = dL / dx * x 私が知っている限りでは、これを以下に実装しました。ただし、このレイヤーを使用して作成したネットワークは、トレーニング中に激しい変動を示すため、これは意図した結果を与えていないようです。 import numpy as np from scipy import signal class ConvNDLayer: def __init__(self,channels, kernel_size, dim): self.channels = channels self.kernel_size …
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.