import torch

# テンソルの基本操作
x = torch.rand(3, 3)
print('テンソル:', x)
print('合計:', x.sum().item())
print('平均:', x.mean().item())

# 行列積
y = x @ x.T
print('行列積 (x @ x.T):', y)

# 自動微分
a = torch.tensor([3.0], requires_grad=True)
loss = a ** 2 + 2 * a + 1
loss.backward()
print('dl/da =', a.grad.item())  # 2*3 + 2 = 8

# GPU が使えれば転送
if torch.cuda.is_available():
    x_gpu = x.to('cuda')
    print('GPU テンソル:', x_gpu)