回答:
唯一の違いは、入力空間の次元です。たたみ込み層の入力は次のような形をしています。
input_shape =(batch_size、input_dims、channels)
conv1Dの入力形状:(batch_size、W、channels)
例:44100 Hzでサンプリングされた1秒のステレオ音声信号、形状:(batch_size、44100,2)
conv2Dの入力形状:(batch_size、(H、W)、channels)
例:32x32 RGB画像、形状:(batch_size、32,32,3)
conv3Dの入力形状:(batch_size、(H、w、D)、channels)
例(よりトリッキー):24 fpsでの32x32 RGBイメージの1秒のビデオ、形状:(batch_size、32,32,3,24)
チャンネルとは?
重要なことは、チャネルが入力データにとって何を意味するかを考えることです。たたみ込み層はチャネルごとに異なるフィルターを適用するため、conv層の重みは次のような形になります。
(kernel_size,num_channels,num_filter_per_channels)
例:
12個のフィルターとサイズ3の正方核行列を含むたたみ込み層。この層は、各チャネルに12個の異なるフィルターを適用します。前に示した例では:
44100 Hzでサンプリングされた1秒のステレオ音声信号、kernel_size = 3
12 x 2 = 24の一次元フィルター、各チャネルに12フィルター
Weigths shape: (3, 2, 12)
32x32 RGBイメージ、kernel_size =(3,3)
12 x 3 = 36の2次元フィルター、各チャネルに12フィルター
Weights shape: (3, 3, 3, 12)
24 fpsでの32x32 RGBイメージの1秒のビデオ、kernel_size =(3,3,3)
24 x 12 = 288の3次元フィルター、各チャネルに12フィルター
Weights shape: (3, 3, 3, 24, 12)
したがって、各チャネルには独自のフィルタセットがあるため、チャネルの意味を決定することは非常に重要です。最初の例では、ステレオ信号とRGB画像が異なるチャネルであることを決定するのは簡単なようです...実際、それらは一般にそのように命名されています(ステレオチャネル、RGBチャネル)。ビデオの例では、あいまいです...時間軸をチャネルとして3D入力としてビデオを設定することは、時間フレームが来る順序が重要ではないため(このため、出力は各チャネルのフィルタが合計されます)、入力データの固有の時間ダイナミクスが失われます。1つのより良いアプローチ(アプリケーションによって異なります)は、リカレントニューラルネットワークで2D畳み込みを使用してRGB画像を処理することです。同じことが音声信号でも起こります
入力次元がDの信号は、チャネルが1つあるD + 1次元の信号と見なすことができますが、結果として得られる特徴空間は、それほど代表的ではない/ 有用ではない可能性があることに注意してください。
(44100,2) --> expand_dimension(axis=-1)--> ((44100,2),1)
例をサポートするKerasコード
from keras import Input, Conv1D, Conv2D, Conv3D
#1D
in_ = Input(shape=(44100,2))
layer = Conv1D(filters=12,kernel_size=3)
out_ = layer(in_)
print("Weights shape: {}".format(layer.get_weights()[0].shape))
#2D
in_ = Input(shape=(32,32,3))
layer = Conv2D(filters=12,kernel_size=3)
out_ = layer(in_)
print("Weights shape: {}".format(layer.get_weights()[0].shape))
#3D
in_ = Input(shape=(32,32,3,24))
layer = Conv3D(filters=12,kernel_size=3)
out_ = layer(in_)
print("Weights shape: {}".format(layer.get_weights()[0].shape))
Conv1Dは、音声に類似した入力信号に使用されます。それらを使用することにより、信号全体のパターンを見つけることができます。たとえば、音声信号と畳み込み層があります。各畳み込みは、コスト関数を使用することにより、音声を横断して意味のあるパターンを見つけます。
Conv2Dは画像に使用されます。このユースケースは非常に人気があります。このレイヤーに使用される畳み込み方法は、いわゆるボリューム上の畳み込みですます。これは、複数のチャネルを含む2次元の画像があることを意味します(例としてRGB)。この場合、各畳み込みフィルターは、画像全体で適切なパターンを見つけるために画像と実際に相互相関されて畳み込まれる3次元フィルターである必要があります。
Conv3Dは通常、各タイムスパンのフレームがあるビデオに使用されます。これらのレイヤーには通常、以前のレイヤーよりも多くのパラメーターが学習されます。私たちがそれらを呼ぶ理由各フレームの画像の他に、離散値を含む時間と呼ばれる別の軸があり、それらのそれぞれが特定のフレームに対応しています。