pytorchのnn.convのパラメータ群について
pytorchのnn.convのパラメータについて
以前はtensor flow +kerasを使っていましたが、最近pytorchに乗り換えたところ、torchの畳み込みパラメータがtensorflowのものと少し違うことが分かったので、ここに記録します。
tensorflowとは異なり、in_channelsとout_channelsはそれぞれ入力と出力のチャンネル数、stride stepsとpaddingはkerasと同じ、groupsは主にグループ化畳み込みみたいなことをする面白いパラメータです、例えば
input_size = [1,6,1,1]とした場合、仮に
conv = nn.Conv2d(in_channels=6, out_channels=6, kernel_size=1, stride=1, dilation: null convolution; padding=0, groups=? ,
bias=False)
groups=1 の場合、デフォルトの畳み込み層である conv.weight.data.size は [6,6,1,1] となり、実際には 6 * 6=36 個のパラメータがありますが、group=3 の場合は out_channel/groups = 2 チャンネルのみが各グループに含まれるので、各畳み込み層のパラメータのサイズは [ 6,2,1,1 ]となります。group=3 の場合、各グループには out_channel/groups=2 チャンネルしか関与しないので、各畳み込み層のパラメータサイズは [ 6,2,1,1] となり、各グループには 6 * 2=12 のパラメータがあり、これは各グループを 3 回繰り返す(= group )ことに相当し、最後に concat される。
また、実際の実験では、同じネットワーク構造であれば、このグループ化されたコンボリューションの方がグループ化されていないコンボリューションより優れています。
関連
-
[解決済み] Pytorch ある割合で特定の値を持つランダムなint型テンソルを作成する方法は?例えば、25%が1で残りが0というような。
-
AttributeError NoneType オブジェクトに属性データがない。
-
pytorch学習におけるtorch.squeeze()とtorch.unsqueeze()の使用法
-
Pytorch torch.Tensor.detach()メソッドの使い方と、指定したモジュールの重みを変更する方法
-
torch.stack()の公式解説、詳細、例題について
-
torch.catとtorch.stackの違いについて
-
pytorch-DataLoader (データイテレータ)
-
pytorchにおける次元とそのsqueeze()、unsqueeze()関数の理解
-
EOFError: 入力がなくなった
-
torch.nn.Conv1dと1次元畳み込みの説明
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
PytorchがNotImplementedErrorを発生させるようです。
-
ピトーチリピートの使用方法
-
pytorchのSpeat()関数
-
torch.stack()の使用
-
pytorchラーニングノート(XIV)。DataLoaderのソースコード読み込み
-
PyTorchのF.cross_entropy()関数
-
AttributeError: 'Graph' オブジェクトには 'node' という属性がありません。
-
RuntimeError: CUDAエラー: 不正なメモリアクセスが発生しました。
-
pytorchのマルチGPU利用 - #CUDA_VISIBLE_DEVICES use #torch.nn.DataParallel() #エラー解決
-
テンソルコード可視化-Pytorch