私はconvnetjsを使ってインタラクティブなチュートリアルを作成しています。私は単純な9x9イメージの 'X'と畳み込みレイヤーを3x3 '\'として使用しています... 畳み込みの結果はどうなるべきですか?
私は結果が異なると予想しました。私は7.1の代わりに(-1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1)/ 9 = 0.77となるように、円で囲んだ結果を期待しました。
7.1の結果はどうなっていますか?これはバイアスに起因するのでしょうか?フィルターは 'X'の '\'部分に一致する形状なので、全体の結果に '\'対角に沿って最も高い数字が表示されることも期待しました。
更新:私は次のような結果が期待されます。バイアスは配列[0.1,0.1,0.1]であるように見える。下の代わりに、上の結果を(少なくとも左上のピクセルについて)計算する計算は何ですか?
<html>
<head>
<script src="http://cs.stanford.edu/people/karpathy/convnetjs/build/convnet-min.js"></script>
</head>
<body>
<script>
// Initialize an input that is 9x9 and initialized with zeroes.
let inputVol = new convnetjs.Vol(9, 9, 1, 0.0);
// Manually set the input weights from zeroes to a 'X'...
inputVol.w = [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1, -1, -1, -1, -1, -1, 1, -1, -1, -1, 1, -1, -1, -1, 1, -1, -1, -1, -1, -1, 1, -1, 1, -1, -1, -1, -1, -1, -1, -1, 1, -1, -1, -1, -1, -1, -1, -1, 1, -1, 1, -1, -1, -1, -1, -1, 1, -1, -1, -1, 1, -1, -1, -1, 1, -1, -1, -1, -1, -1, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1];
// Define the layers
let layers = [];
layers.push({
type: 'input',
out_sx: 9,
out_sy: 9,
out_depth: 1
});
layers.push({
type: 'conv',
sx: 3,
pad: 0,
filters: 3,
stride: 1,
activation: 'relu'
});
let net = new convnetjs.Net();
net.makeLayers(layers);
let convLayer = net.layers[1];
let convLayerFilters = convLayer.filters;
// Set filters manually
// looks like a '\'
convLayerFilters[0].w = [1, -1, -1, -1, 1, -1, -1, -1, 1];
// looks like a 'X'
convLayerFilters[1].w = [1, -1, 1, -1, 1, -1, 1, -1, 1];
// looks like a '/'
convLayerFilters[2].w = [-1, -1, 1, -1, 1, -1, 1, -1, -1];
// Run the net
net.forward(inputVol);
// Prints '7.1' instead of '0.77'. Why???
console.log(net.layers[1].out_act.w[0]);
</script>
</body>
</html>
コードを含める必要があります。現在、これらの結果を生成したコードを推測することができます。 –
@MatiasValdenegroそれは私のコードではなく、convnetがどのように動作するかという問題です。しかし、トラブルシューティングに役立つように、最小限のコードを含めるように投稿を編集しました。 – user3567174
問題は、一般的にconvnetがどのように動作するか、特定のコードと結果を持っているかどうかということではなく、それらが異なる理由を尋ねています。畳み込みレイヤーは、畳み込みとバイアスとアクティブ化だけを行います。あなたが持っているコードは、何か特別なことをしているかもしれないし、そのコードを見なければなりません。 –