PyTorch torch.moveaxis 関数


Pytorch torch 参考手册Pytorch torch リファレンスマニュアル

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)

出力結果は次のとおりです:

原始形状: 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)

出力結果は次のとおりです:

原始形状: 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)

出力結果は次のとおりです:

原始形状: torch.Size([2, 3, 4, 5])
移动后形状: torch.Size([4, 5, 2, 3])

注意:torch.moveaxis返されるのはビューであり、コピーではないため、操作は効率的です。この関数は、異なる深層学習フレームワークやAPIに合わせてデータ形状を調整するために頻繁に使用されます。


Pytorch torch 参考手册Pytorch torch リファレンスマニュアル

その他の拡張