PyTorch torch.moveaxis 関数
torch.moveaxisは、PyTorch でテンソルの軸を移動するために使用される関数です。指定した軸を新しい位置に移動し、新しいテンソルのビューを返します。
この関数はtorch.movedim機能は同じですが、パラメータ名が異なります(moveaxis は "axis" を使用し、movedim は "dim" を使用します)。
関数定義
torch.moveaxis(input, source, destination)
パラメータ:
input(Tensor): 入力テンソル。source(int または tuple of int): 移動する元の軸インデックス。整数または軸インデックスのタプルです。destination(int または tuple of int): ターゲット位置のインデックス。整数または軸インデックスのタプルで、長さは source と同じである必要があります。
戻り値:
torch.Tensor: 軸を移動した後のテンソルのビューを返します。
使用例
例
import torch
# 形状が (batch, seq_len, feature) のテンソルを作成します
x = torch.randn(32, 10, 128)
# 最後の次元を最初の位置に移動します
y = torch.moveaxis(x, -1, 0)
print("元の形状:", x.shape)
print("移動後の形状:", y.shape)
# 形状が (batch, seq_len, feature) のテンソルを作成します
x = torch.randn(32, 10, 128)
# 最後の次元を最初の位置に移動します
y = torch.moveaxis(x, -1, 0)
print("元の形状:", x.shape)
print("移動後の形状:", y.shape)
出力結果は次のとおりです:
原始形状: torch.Size([32, 10, 128]) 移动后形状: torch.Size([128, 10, 32])
例
import torch
# 4次元テンソル (time, channel, height, width) を作成します
x = torch.randn(10, 3, 32, 32)
# time 次元を最後に移動します
y = torch.moveaxis(x, 0, -1)
print("元の形状:", x.shape)
print("移動後の形状:", y.shape)
# 4次元テンソル (time, channel, height, width) を作成します
x = torch.randn(10, 3, 32, 32)
# time 次元を最後に移動します
y = torch.moveaxis(x, 0, -1)
print("元の形状:", x.shape)
print("移動後の形状:", y.shape)
出力結果は次のとおりです:
原始形状: torch.Size([10, 3, 32, 32]) 移动后形状: torch.Size([3, 32, 32, 10])
例
import torch
# 複数の軸を一緒に移動します
x = torch.randn(2, 3, 4, 5)
# 軸0と1を一緒に軸2と3の位置に移動します
y = torch.moveaxis(x, source=(0, 1), destination=(2, 3))
print("元の形状:", x.shape)
print("移動後の形状:", y.shape)
# 複数の軸を一緒に移動します
x = torch.randn(2, 3, 4, 5)
# 軸0と1を一緒に軸2と3の位置に移動します
y = torch.moveaxis(x, source=(0, 1), destination=(2, 3))
print("元の形状:", x.shape)
print("移動後の形状:", y.shape)
出力結果は次のとおりです:
原始形状: torch.Size([2, 3, 4, 5]) 移动后形状: torch.Size([4, 5, 2, 3])
注意:torch.moveaxis返されるのはビューであり、コピーではないため、操作は効率的です。この関数は、異なる深層学習フレームワークやAPIに合わせてデータ形状を調整するために頻繁に使用されます。
その他の拡張
Pytorch torch リファレンスマニュアル