テンソルの最大の利点の 1 つは、効率的な数学的演算を実行できることです。テンソルは、加算、減算、乗算、除算などの要素ごとの演算や、行列の乗算や転置などの行列演算を含む幅広い算術演算をサポートします。
PyTorch は、テンソルを操作するための関数とメソッドの包括的なセットを提供します。これらには、テンソルの再形成、特定の要素またはサブテンソルの抽出、指定された次元に沿ったテンソルの連結または分割のための操作が含まれます。さらに、PyTorch は、テンソルのインデックス作成、スライス、ブロードキャストのための機能を提供しており、これにより、さまざまな形状やサイズのテンソルの操作が容易になります。
この記事では、PyTorch でのテンソルの基本的な操作を学び、テンソルの作成方法、基本的な操作の実行方法、形状の操作方法、および CPU と GPU 間でのテンソルの移動方法を学びます。
テンソルの作成
PyTorch の Tensor はいくつかの方法で作成できます。いくつかの一般的な方法を見てみましょう。
テンソルを作成するには、「torch.Tensor」クラスまたは「torch.tensor」関数を使用できます。いくつかの例を見てみましょう:
輸入 松明
# を作成します 1 - Python リストからの次元テンソル
tensor_1d = 松明。 テンソル ( [ 1 、 2 、 3 、 4 、 5 ] )
印刷する ( tensor_1d )
# を作成します 2 - 入れ子になった Python リストからの次元テンソル
テンソル_2d = 松明。 テンソル ( [ [ 1 、 2 、 3 ] 、 [ 4 、 5 、 6 ] ] )
印刷する ( テンソル_2d )
# 特定の形状を持つゼロのテンソルを作成する
ゼロテンソル = 松明。 ゼロ ( 3 、 2 )
印刷する ( ゼロテンソル )
# 特定の形状を持つ 1 のテンソルを作成する
ワンズテンソル = 松明。 もの ( 2 、 3 )
印刷する ( ワンズテンソル )
# 一様分布からのランダムな値を使用してテンソルを作成する
ランダムテンソル = 松明。 ランド ( 2 、 2 )
印刷する ( ランダムテンソル )
与えられた例では、さまざまな形状のテンソルを作成し、特定の数値、0、1、ランダムな値などのさまざまな値で初期化します。前のコード スニペットを実行すると、同様の出力が表示されるはずです。
テンソル演算
テンソルを取得したら、要素ごとの算術演算、行列演算など、さまざまな演算をテンソルに対して実行できます。
要素ごとの算術演算
要素ごとの算術演算により、要素ごとにテンソル間の計算を実行できます。操作に関係するテンソルは同じ形状を持つ必要があります。
ここではいくつかの例を示します。
輸入 松明# テンソルを作成する
テンソル1 = 松明。 テンソル ( [ 1 、 2 、 3 ] )
テンソル2 = 松明。 テンソル ( [ 4 、 5 、 6 ] )
# 追加
追加 = テンソル1 + テンソル2
印刷する ( '追加:' 、 追加 )
# 減算
引き算 = テンソル1 - テンソル2
印刷する ( 「減算:」 、 引き算 )
# 乗算
乗算 = テンソル1 * テンソル2
印刷する ( '乗算:' 、 乗算 )
# 分割
分割 = テンソル1 / テンソル2
印刷する ( '分割:' 、 分割 )
指定されたコードでは、2 つのテンソル間で加算、減算、乗算、除算の演算を実行し、その結果、計算された値を持つ新しいテンソルが生成されます。コード スニペットの結果は次のようになります。
行列演算
PyTorch は、行列の乗算や転置など、テンソルの効率的な行列演算を提供します。これらの操作は、線形代数やニューラル ネットワークの計算などのタスクに特に役立ちます。
輸入 松明# テンソルを作成する
テンソル1 = 松明。 テンソル ( [ [ 1 、 2 ] 、 [ 3 、 4 ] ] )
テンソル2 = 松明。 テンソル ( [ [ 5 、 6 ] 、 [ 7 、 8 ] ] )
# 行列の乗算
マトリックス_製品 = 松明。 マット ( テンソル1 、 テンソル2 )
印刷する ( 「マトリックス積」 、 マトリックス_製品 )
# 行列転置
行列の転置 = テンソル1。 T
印刷する ( 「行列の転置:」 、 行列の転置 )
この例では、「torch.matmul」関数を使用して行列の乗算を実行し、「.T」属性を使用して行列の転置を取得します。
テンソル形状の操作
テンソルに対する操作の実行に加えて、特定の要件に合わせてテンソルの形状を操作する必要があることがよくあります。 PyTorch は、テンソルを再形成するための関数をいくつか提供します。これらの関数のいくつかを見てみましょう:
輸入 松明# テンソルを作成する
テンソル = 松明。 テンソル ( [ [ 1 、 2 、 3 ] 、 [ 4 、 5 、 6 ] ] )
# テンソルの形状を変更する
reshape_tensor = テンソル。 形を変える ( 3 、 2 )
印刷する ( 「再形成されたテンソル:」 、 reshape_tensor )
# テンソルのサイズを取得する
サイズ = テンソル。 サイズ ( )
印刷する ( 「テンソルのサイズ:」 、 サイズ )
# 要素数を取得する で テンソル
要素数 = テンソル。 名付ける ( )
印刷する ( 「要素の数:」 、 要素数 )
提供されたコードでは、関数 reshape を使用してテンソルを再形成し、size メソッドを使用してテンソルのサイズを取得し、numel メソッドを使用してテンソル内の要素の合計数を取得します。
CPU と GPU 間での Tensor の移動
PyTorch は GPU アクセラレーションのサポートを提供しており、グラフィック カード上で計算を実行できるため、トレーニング時間を短縮してディープ ラーニング タスクを大幅に高速化できます。 「to」メソッドを使用して、CPU と GPU の間でテンソルを移動できます。
注記 : これは、マシン上に CUDA を備えた NVIDIA GPU がある場合にのみ実行できます。
輸入 松明# CPU上にテンソルを作成
テンソル_CPU = 松明。 テンソル ( [ 1 、 2 、 3 ] )
# チェック もし GPUが利用可能です
もし 松明。 違う 。 利用可能です ( ) :
# テンソルをGPUに移動する
テンソル_GPU = テンソル_CPU。 に ( '違う' )
印刷する ( 「GPU 上の Tensor:」 、 テンソル_GPU )
それ以外 :
印刷する ( 「GPU が利用できません。」 )
提供されたコードでは、torch.cuda.is_available() を使用して GPU が利用可能かどうかを確認します。 GPU が利用可能な場合は、「cuda」引数を指定した「to」メソッドを使用して、テンソルを CPU から GPU に移動します。
結論
基本的なテンソル演算を理解することは、PyTorch を使用して深層学習モデルを構築するために重要です。この記事では、テンソルを作成し、基本的な操作を実行し、その形状を操作し、CPU と GPU の間でテンソルを移動する方法を検討しました。この知識を活用すれば、PyTorch でテンソルの操作を開始し、計算を実行し、洗練された深層学習モデルを構築できるようになります。 Tensor は、PyTorch でのデータ表現と操作の基盤として機能し、この多用途な機械学習フレームワークの能力を最大限に発揮できるようにします。