0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

初心者向けPyTorch篇:3.PyTorchにおけるTensorの基本操作と型変換

Last updated at Posted at 2024-10-22

PyTorchにおけるTensorの基本操作と型変換

PyTorchは、機械学習やディープラーニングの研究に広く使用されているライブラリです。この記事では、PyTorchでのTensorの基本的な操作と型変換について説明します。

基本的なTensorの作成と型の確認

まずは、PyTorchのTensorを作成し、そのデータ型を確認する方法から始めましょう。

import torch
import numpy as np

# 整数のTensorを作成し、データ型を確認
t = torch.tensor([1, 2, 3])
print(t.dtype)  # 出力: torch.int64

浮動小数点数のTensorへの変換

次に、整数のTensorを浮動小数点数のTensorに変換します。

# 浮動小数点数のTensorを作成し、データ型を確認
t = torch.FloatTensor([1, 2, 3])
print(t.dtype)  # 出力: torch.float32

Long型Tensorの作成

Long型のTensorを作成しますが、もし浮動小数点数が含まれている場合、それらは切り捨てられます。

# Long型のTensorを作成し、データ型を確認
t = torch.LongTensor([1.0, 2.0, 3.3])
print(t.dtype)  # 出力: torch.int64

様々な初期化方法

Tensorを特定の形状で初期化する方法はいくつかあります。

# ランダムな値、ゼロ、ワンでの初期化
print(torch.rand(2, 3))  # 0-1のランダムな値
print(torch.randn(2, 3))  # 標準正規分布に従うランダムな値
print(torch.zeros(2, 3))  # ゼロで初期化
print(torch.ones(2, 3))   # ワンで初期化

既存のTensorを模して初期化

既存のTensorと同じ形状で初期化する方法も便利です。

# 既存のTensorと同じ形状でランダム値やゼロ、ワンで初期化
print(torch.zeros_like(t))  # tと同じ形状のゼロTensor
print(torch.ones_like(t))   # tと同じ形状のワンTensor
print(torch.rand_like(t))   # tと同じ形状のランダム値Tensor

Tensorの属性とデバイス間の移動

Tensorの形状やデバイスを確認し、GPUが利用可能な場合はデバイス間でTensorを移動させる方法を見てみましょう。

# 形状とデバイスの確認
print(t.shape)  # Tensorの形状を出力
print(t.device)  # Tensorが存在するデバイスを出力

# GPUが利用可能な場合、TensorをGPUに移動
if torch.cuda.is_available():
    t = t.to("cuda")

# TensorをCPUに戻す
t = t.to("cpu")

異なるdeviceのTensorを混ぜて計算できません。

型変換とNumpy互換性

Tensorのデータ型を変換し、Numpy配列との相互変換も行います。

# データ型の変換
t.long()  # Long型に変換
t.float()  # Float型に変換

# Numpy配列との相互変換
t = torch.from_numpy(np.random.randn(3, 4))  # Numpy配列からTensorへ
t_arr = t.numpy()  # TensorからNumpy配列へ

Tensorの操作と変形

Tensorに対する基本的な算術操作や、形状の変更について説明します。

# Tensorの加算とインプレース操作
t = t + 3  # 全ての要素に3を加算
t = t.add(torch.ones(2, 3))  # t = t + 3と同じ
t.add_(torch.ones(2, 3))  # t自体を更新(「t =」が不要)

# Tensorの転置
t = t.T  # Tensorの転置

# Tensorの形状変更
t = torch.randn(12, 3, 4, 4)
t = t.view(12, 48)  # 新しい形状に変更
print(t.shape)  # 出力: torch.Size([12, 48])

# さらに形状を変更
t = t.view(1, 12, 48, 1)
t = torch.squeeze(t)  # 不要な次元を削除
print(t.shape)  # 出力: torch.Size([12, 48])

以上で、PyTorchにおけるTensorの基本的な操作と型変換についての解説を終えます。これらの基本操作をマスターすることで、より複雑なディープラーニングモデルの構築に役立てることができます。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?