1.1_pytorch_什么是pytorch

CUDA安装教程(GPU) 教程

https://zhuanlan.zhihu.com/p/358737417

错误:nvcc --version: nvcc不是内部或外部命令

https://blog.csdn.net/RookieWantToFly/article/details/108000960

pytorch

1、什么是pytorch

image-20210812121040262

2、基本语法
from __future__ import print_function
import torch

# 创建一个没有初始化的矩阵
x = torch.empty(5, 3)
print(x)

# 创建一个初始化的矩阵
y = torch.rand(5, 3)
print(y)

# 创建一个全0的矩阵,并且数据元素的类型为long
z = torch.zeros(5, 3, dtype=torch.long)
print(z)

# 直接通过数据创建张量
a = torch.tensor([3.2, 2.5])
print(a)


# 通过已经有的张量创建相同尺寸的新张量
b = x.new_ones(5, 3, dtype=torch.double)
print(b)

# 利用rand_like方法得到相同尺寸张量,并且采用随机初始化的方法为其复制
c = torch.randn_like(b, dtype=torch.float)
print(c)

# 采用.size()方法来得到张量的形状,返回是tuple类型
print(b.size(), c.size())
3、基本运算
from __future__ import print_function
import torch


# 随机初始化的X和Y
x = torch.rand(5, 3)
y = torch.rand(5, 3)


# 加法操作
'''
# 加法操作1
print(x+y)

# 加法操作2
print(torch.add(x, y))

# 加法操作3
result = torch.empty(5, 3)
print(result)
torch.add(x, y, out=result)  # 将结果存到result里面去
print(result)

# 加法操作4(原地置换:in-place)  x.copy_(y)  x.add_(y)都会改变x的值
print("原来的x+y:", x+y)
print("############")
print("原来的y:", y)
print("############")
# 原地置换,执行的操作是y=y+x
y.add_(x)
print("原地置换后的y:", y)

'''


# 切片操作
'''
print(x[:, 1])  # 取第一列
print(x[:, :3])  # 取0、1、2列
'''


# 改变张量的形状 torch.view():需要保证元素的总数量不变
'''
a = torch.randn(4, 4)
b = a.view(16)   # 4x4=16
c = a.view(-1, 2)  # -1是自动匹配个数(行数),这里代表8: 2x8=16   ( -1后必须是整除的 )
print(a.size(), b.size(), c.size())
print(a)
print(b)
print(c)
'''

# 如果张量中只有一个元素,可以用。item()将值取出来,作为一个python number
'''
a = torch.randn(1)
print(a)  # tensor([-0.4604])
print(a.item())  # -0.46044033765792847
'''
4、类型转换
from __future__ import print_function
import torch
import numpy as np

# Torch Tensor 是升级的Numpy array,但是两者并不能划等号
# Torch Tensor 和 Numpy array之间的转换     注意: 除了charTensor,其他都可以反向转换

# Torch Tensor 转为 Numpy array
'''
a = torch.ones(5)
print(a)
b = a.numpy()
print(b)

# 二者底层(存储空间)共享, 改变a, b也随之改变
a.add_(1)  # 就地赋值
print(a)
print(b)
'''

#  Numpy array 转为 Torch Tensor (底层依然共享)
'''
a = np.ones(5)
b = torch.from_numpy(a)
np.add(a, 1, out=a)
print(a)
print(b)
'''

# 判断服务器上已经安装了GPU和CUDA
if torch.cuda.is_available():
    # 定义设备,将设备指定为GPU
    device = torch.device("cuda")
    # 在GPU上创建张量y, 在CPU上创建张量x
    x = torch.randn(1)
    y = torch.ones_like(x, device=device)
    # 将x转移到GPU上
    x = x.to(device)
    # 此时x、y都必须在GPU上才可以执行加减操作
    z = x+y
    # 此时Z在GPU上
    print(z)     # tensor([2.2064], device='cuda:0')
    # 将Z转移到CPU上再打印
    print(z.to("cpu", torch.double))     # tensor([2.2064], dtype=torch.float64)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值