tomo_no
@tomo_no (T N)

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

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

1Answer

Your answer might help someone💌