Open5
深層学習の色々(PyTorch)
Flatten(平坦化)
デフォルトは start_dim=1
, end_dim=-1
の範囲が平坦化.
# t = torch.Size([2, 3, 4, 5])
flatten = nn.Flatten()
print(flatten(t).shape)
# torch.Size([2, 60])
start_dim=0
, end_dim=-1
の範囲を平坦化すると,
# t = torch.Size([2, 3, 4, 5])
flatten = nn.Flatten(0, -1)
print(flatten(t).shape)
# torch.Size([120])
周波数軸とチャンネル軸に沿って平坦化するとは,チャネルと周波数の次元を1つのベクトルにまとめるという意味なので,
[バッチサイズ、チャネル数、周波数、時間]
が
[バッチサイズ、時間、チャネル×周波数]
にする.
permute(次元を入れ替える)
第1引数: 入力テンソル
第2引数: 順番を指定する
# torch.Size([2, 3, 5, 9])
torch.permute(x, (2, 0, 1, 3))
# torch.Size([5, 2, 3, 9])
Linear(全結合層)
第1引数: 特徴量の数(入力テンソルの最後の次元)
第2引数: 出力数
x = torch.randn(5, 2, 27)
# torch.Size([5, 2, 27])
fc = nn.Linear(27, 54)
x = fc(x)
# torch.Size([5, 2, 54])
Numpyの次元