ここから畳み込みニューラル ネットワークについて読みました。それから torch7 で遊び始めました。CNN の畳み込み層と混同しています。
チュートリアルから、
1
The neurons in a layer will only be connected to a small region of the layer before it, instead of all of the neurons in a fully-connected manner.
2
For example, suppose that the input volume has size [32x32x3], (e.g. an RGB CIFAR-10 image). If the receptive field is of size 5x5, then each neuron in the Conv Layer will have weights to a [5x5x3] region in the input volume, for a total of 5*5*3 = 75 weights.
3
入力レイヤーが[32x32x3]の場合、CONV layer will compute the output of neurons that are connected to local regions in the input, each computing a dot product between their weights and the region they are connected to in the input volume. This may result in volume such as [32x32x12].
CONVレイヤーが画像に何をするかを試し始めました。私はtorch7でそれをしました。ここに私の実装があります、
require 'image'
require 'nn'
i = image.lena()
model = nn.Sequential()
model:add(nn.SpatialConvolutionMM(3, 10, 5, 5)) --depth = 3, #output layer = 10, filter = 5x5
res = model:forward(i)
itorch.image(res)
print(#i)
print(#res)
3
512
512
[torch.LongStorage of size 3]
10
508
508
[torch.LongStorage of size 3]
CNNの構造を見てみましょう
だから、私の質問は、
質問1
畳み込みはこのように行われますか - 32x32x3 の画像を取得するとしましょう。そして5x5フィルターがあります。次に、5x5 フィルターは 32x32 画像全体を通過し、畳み込み画像を生成しますか? 画像全体で 5x5 フィルターをスライドすると、1 つの画像が得られます。10 個の出力レイヤーがある場合は、10 個の画像が得られます (出力からわかるように)。どうやってこれらを手に入れますか?(必要に応じて説明のための画像を参照してください)
質問2
conv 層のニューロンの数は? 出力層の数ですか?私が上に書いたコードでは、model:add(nn.SpatialConvolutionMM(3, 10, 5, 5))
. 10ですか?(出力層の数?)
もしそうなら、ポイント番号2は意味がありません。それによるとIf the receptive field is of size 5x5, then each neuron in the Conv Layer will have weights to a [5x5x3] region in the input volume, for a total of 5*5*3 = 75 weights.
、ここの重さはどうなるの?私はこれに非常に混乱しています。torch で定義されたモデルでは、重みはありません。では、ここで重量がどのような役割を果たしているのでしょうか?
誰かが何が起こっているのか説明できますか?