美文网首页
1 Pytorch&Tensor

1 Pytorch&Tensor

作者: 许志辉Albert | 来源:发表于2021-02-02 09:49 被阅读0次

1.Pytorch与张量

%matplotlib inline

2.PyTorch是什么

PyTorch是一个基于Torch的Python开源机器学习库,用于深度学习神经网络构建AI应用程序。 它主要由Facebook的人工智能研究小组开发。Uber的"Pyro"也是使用的这个库。

PyTorch是一个Python包,提供两个高级功能:

  • 具有强大的GPU加速的张量计算(如NumPy),可以使用GPU的强大计算能力
  • 包含自动求导系统的的深度神经网络

2.1 开始

2.1.1 Tensors(张量)

Tensors与Numpy中的 ndarrays类似,但是在PyTorch中
Tensors 可以使用GPU进行计算.

神经网络其实底层就是很多的tensor计算


1 2
from __future__ import print_function
import torch

创建一个5*3的矩阵 但并未初始化

x = torch.empty(5,3)
print(x)
3

创建一个随机初始化矩阵

x = torch.rand(5,3)
print(x)
4

创建一个0填充的矩阵,数据类型为long:

x = torch.zeros(5,3,dtype = torch.long)
print(x)
5

创建tensor并使用现有数据初始化

x = torch.tensor([5.5 , 3])
print(x)
6

根据现有的张量创建矩阵。这些方法将重用输入张量的属性,例如 dtype,除非设置新的值进行覆盖

x = x.new_ones(5,3 , dtype = torch.double)  #new_*方法创建对象
print(x)

x = torch.randn_like(x , dtype = torch.float) #覆盖 dtype
print(x)      #对象的size是相同的,知识值和类型发生了变化
7

获取 size

使用size方法与Numpy的shape属性返回的相同,张量也支持shape属性,后面会详细介绍

print(x.size())
8

torch.Size 返回值是 tuple类型, 所以它支持tuple类型的所有操作.

操作
操作有多种语法。

我们将看一下加法运算。

加法1:

y = torch.rand(5,3)
print(x +y)
9

加法2:

print(torch.add(x,y))
10

提供输出tensor作为参数

result = torch.empty(5,3)
torch.add(x , y , out=result)
print(result)
11

替换

#add x to y
y.add(x)
print(y)
12

任何以"" 结尾的操作都会用结果替换原变量,例如:"x.copy(y)" , "x.t_()" , 都会改变"x"

你可以使用与Numpy索引方式相同的操作来进行对张量的操作

print(x[: , 1])
13

torch.view: 可以改变张量的维度和大小

torch.view 与Numpy 的reshape类似

x = torch.randn(4,4)
y = x.view(16)
z = x.view(-1,8) #size -1 从其他维度推断
print(x.size() , y.size() , z.size())
14

如果你有只有一个元素的张量,使用 .item来得到Python数据类型的数值

x = torch.randn(1)
print(x)
print(x.item())

15

2.2Numpy转换

Converting a Torch Tensor to a NumPy array and vice versa is a breeze.

The Torch Tensor and NumPy array will share their underlying memory
locations, and changing one will change the other.

Converting a Torch Tensor to a NumPy Array

a = torch.ones(5)
print(a)
16
b = a.numpy()
print(b)
17

See how the numpy array changed in value.

a.add_(1)
print(a)
print(b)
18

NumPy Array 转化成 Torch Tensor

使用from_numpy自动转化

import  numpy as np 
a = np.ones(5)
b = torch.from_numpy(a)
np.add(a, 1, out= a)
print(a)
print(b)
19

所有的Tensor 类型默认都是基于CPU , CharTensor 类型不支持到Numpy的转换

2.3 CUDA张量

使用.to方法,可以将Tensor移动到任何设备中

# is_available 函数判断是否有cuda可以使用
# ``torch.device``将张量移动到指定的设备中
if torch.cuda.is_available():
    device = torch.device("cuda")          # a CUDA 设备对象
    y = torch.ones_like(x, device=device)  # 直接从GPU创建张量
    x = x.to(device)                       # 或者直接使用``.to("cuda")``将张量移动到cuda中
    z = x + y
    print(z)
    print(z.to("cpu", torch.double))       # ``.to`` 也会对变量的类型做更改
20

相关文章

  • 1 Pytorch&Tensor

    1.Pytorch与张量 2.PyTorch是什么 PyTorch是一个基于Torch的Python开源机器学习库...

  • 1▪1▪1▪1▪1

    今天是国际劳动节,出门看人头,上路遇堵车,处处挤破头,急哭也停不下车。 不如歇了吧 ...

  • 1+1+1…+1=1

    对“一”的理解: 赠人玫瑰,不仅仅是手留余香。 利益他人,实际上也疗愈了自己。 利他、利己,如此往复循环, 最终利...

  • (-1)×(-1)= 1

    数学家经过很长一段时间才认识到(-1)×(-1)= 1是不能被证明的(即使大数学家欧拉曾给出不能令人信服的...

  • 1-2-1-1-1

    【下马请罪】 子龙下马,向张飞跪地请罪道:“张将军,一时失手……”话未停,便被张飞一矛刺了个透心凉。子龙堵着胸口汩...

  • 1 1:1 1(原创小说)

    闪回:那天她…… 当时,我确实听到了那个声音,可如今却怎么也记不清了。 掉下来了。 我觉得,那一刻...

  • 《1+1=1-1》

    十一月十一日晚,致X小姐。 十月初九, 一个人购物的孤独, 你谈起, 月光下轧过的马路, 金钱带不来满足, 忙忙碌...

  • 1+1=-1

    结婚育子这几年,在磕磕碰碰中一路走来,才恍然大悟,自己真正的成长,始于育儿。 婚前是父母的公主,虽说家境贫困,却得...

  • 1+1<1

    也许有人看到我的标题就会来质疑我,说我怎么连最简单的数学都不会。1+1=2>1啊,这么简单的算数题,我怎会不知?但...

  • 1+1=-1

    看到他人发表文章,我也有点手痒痒了~这是接着上回文章的下半部分,有点长,没人看到就好了︿︿ 这个第二件小事的主题就...

网友评论

      本文标题:1 Pytorch&Tensor

      本文链接:https://www.haomeiwen.com/subject/nmrmzktx.html