PyTorch 全結合層のサイズが合っていない(?)
解決したいこと
PyTorchで全結合層のパラメーターの形を見てみたところ、ベクトルと行列のサイズがあっていないと思いました。
例えば、最後の全結合層では入力ベクトルのサイズは(1,512)ですが、全結合層のサイズが(10,512)なので計算ができません。全結合層のサイズが(512,10)だと都合が良いと思うのですが、内部の処理がどうなっているのか教えていただきたいです。
該当するソースコード
Model structure: NeuralNetwork(
(flatten): Flatten(start_dim=1, end_dim=-1)
(linear_relu_stack): Sequential(
(0): Linear(in_features=784, out_features=512, bias=True)
(1): ReLU()
(2): Linear(in_features=512, out_features=512, bias=True)
(3): ReLU()
(4): Linear(in_features=512, out_features=10, bias=True)
(5): ReLU()
)
)
Layer: linear_relu_stack.0.weight | Size: torch.Size([512, 784]) | Values : tensor([[-0.0346, 0.0327, 0.0167, ..., 0.0209, -0.0141, 0.0356],
[ 0.0102, 0.0071, 0.0073, ..., -0.0241, 0.0041, 0.0159]],
device='cuda:0', grad_fn=<SliceBackward>)
Layer: linear_relu_stack.0.bias | Size: torch.Size([512]) | Values : tensor([0.0353, 0.0058], device='cuda:0', grad_fn=<SliceBackward>)
Layer: linear_relu_stack.2.weight | Size: torch.Size([512, 512]) | Values : tensor([[ 0.0287, 0.0135, 0.0429, ..., -0.0268, 0.0441, -0.0108],
[-0.0040, 0.0116, 0.0063, ..., 0.0297, 0.0293, -0.0179]],
device='cuda:0', grad_fn=<SliceBackward>)
Layer: linear_relu_stack.2.bias | Size: torch.Size([512]) | Values : tensor([-0.0209, -0.0367], device='cuda:0', grad_fn=<SliceBackward>)
Layer: linear_relu_stack.4.weight | Size: torch.Size([10, 512]) | Values : tensor([[ 0.0299, 0.0182, -0.0258, ..., 0.0223, -0.0016, 0.0400],
[-0.0118, 0.0364, -0.0230, ..., -0.0393, -0.0152, 0.0244]],
device='cuda:0', grad_fn=<SliceBackward>)
Layer: linear_relu_stack.4.bias | Size: torch.Size([10]) | Values : tensor([-0.0238, -0.0124], device='cuda:0', grad_fn=<SliceBackward>)
0