Deep

Deepラーニングのメモです

772 views

conv1×1の謎

コンボリューション層のカーネルサイズを3×3から1×1に変更した(10行目)

 # coding:UTF-8
import numpy as np
import torch
import torch.nn as nn


def conv_test_net():

    number_net = nn.Sequential(
        nn.Conv2d(3, 1, 1, padding=1),
    )

    return number_net


if __name__ == '__main__':
    # 3チャネル 3×3の画像データを1枚作成
    virtual_img = [
            [
                [
                    [0,0,0],
                    [0,1,0],
                    [0,0,0]
                ],
                [
                    [0,0,0],
                    [1,0,0],
                    [0,0,0]
                ],
                [
                    [0,1,0],
                    [0,0,0],
                    [0,0,0]
                ],
            ]

        ]

    t = torch.tensor(virtual_img, dtype=torch.float)
    net = conv_test_net()
    conv = net[0]
    print("[weight]")
    print(conv.weight)
    print("[bias]")
    print(conv.bias)

    y = net(t)

    print(y.size())
    print(y)

出力結果は以下。

[weight]
Parameter containing:
tensor([[[[ 0.5352]],

         [[-0.0041]],

         [[-0.4606]]]], requires_grad=True)
[bias]
Parameter containing:
tensor([0.0567], requires_grad=True)
torch.Size([1, 1, 5, 5])
tensor([[[[ 0.0567,  0.0567,  0.0567,  0.0567,  0.0567],
          [ 0.0567,  0.0567, -0.4039,  0.0567,  0.0567],
          [ 0.0567,  0.0525,  0.5918,  0.0567,  0.0567],
          [ 0.0567,  0.0567,  0.0567,  0.0567,  0.0567],
          [ 0.0567,  0.0567,  0.0567,  0.0567,  0.0567]]]],
       grad_fn=<MkldnnConvolutionBackward>)

前ページからの計算方法で単純に計算させてみると、以下のようになり、入力データのセルをフィルターの値で合計していることになる。

考えられる効果

もしも、フィルターの値がすべて0.333333…だとしたら、画素が均等に足されるため、グレースケールの画像になる。
実際にはconv1×1の層を複数設けた場合、赤色が強めの画像、青色が強めの画像、緑色が強めの画像など、チャンネルを強調した画像が複数生成されることになる。

3×3のフィルターは画像のエッジ検出に使えているのに対して、1×1は色情報を分解するのに役に立っている?

Page 11 of 29.

前のページ 次のページ



[添付ファイル]


お問い合わせ

プロフィール

マッスル

自己紹介

本サイトの作成者。
趣味:プログラム/水耕栽培/仮想通貨/激辛好き
プログラムは趣味と勉強を兼ねて、のんびり本サイトを作っています。
フレームワークはdjango。
仮想通貨はNEMが好き。
水耕栽培は激辛好きが高じて、キャロライナ・リーパーの栽培にチャレンジ中。

サイト/ブログ

https://www.osumoi-stdio.com/pyarticle/

ツイッター

@darkimpact0626