“动手学深度学习”(一)

从今天开始,记录一哈学习进度,当作督促一哈自己学习。

预备阶段

1.环境配置

1.1 Anaconda,JupyterNotebook,PyTorch

网上都有各种教程,可以自行查找。

2.数据操作

先熟悉一哈在深度学习中对数据的一些基本操作。在pytorch中主要使用Tensor。

2.1创建Tensor

import torch
x=torch.empty(2,1)
x=torch.rand(2,1)   
x=torch.zeros(2,1,dtype=torch.long)    创建一个5x3的long型全0的Tensor 
x=torch.tensor([2.2,3])

还可以根据现有的Tensor来创建

x = x.new_ones(5, 3, dtype=torch.float64)  # 返回的tensor默认具有相同的torch.dtype和torch.device
print(x)

x = torch.randn_like(x, dtype=torch.float) # 指定新的数据类型
print(x) 

输出:

tensor([[1., 1., 1.],
        [1., 1., 1.],
        [1., 1., 1.],
        [1., 1., 1.],
        [1., 1., 1.]], dtype=torch.float64)
tensor([[ 0.6035,  0.8110, -0.0451],
        [ 0.8797,  1.0482, -0.0445],
        [-0.7229,  2.8663, -0.5655],
        [ 0.1604, -0.0254,  1.0739],
        [ 2.2628, -0.9175, -0.2251]])

还可以得到tensor的形状:

print(x.size())    方法
print(x.shape)     属性

2.2 操作

  • 加法
    y=torch.rand(2,3)
    print(x+y)
    或者
    print(torch.add(x,y))
    还可以指定输出:
    result=torch.empty(2,3)
    torch.add(x,y,out=result)
    print (result)
    另外:
    y.add_(x)

  • 索引
    索引出来的结果与原数据共享内存,也即修改一个,另一个会跟着修改。

  • 改变形状
    view(5) or view(4,2)
    1.注意view()返回的新Tensor与源Tensor虽然可能有不同的size,但是是共享data的,也即更改其中的一个,另外一个也会跟着改变。(顾名思义,view仅仅是改变了对这个张量的观察角度,内部数据并未改变)。
    2.如果不想共享data内存,使用clone:
    x_cp = x.clone().view(15)
    x -= 1

  • 另外一个常用的函数为item(),把tensor装换成number

运算的内存开销

  • 使用索引可以不增加内存,或者 y+=x, y.add_(x), torch.add(x,y,out=y)
  • 虽然view返回的Tensor与源Tensor是共享data的,但是依然是一个新的Tensor(因为Tensor除了包含data外还有一些其他属性),二者id(内存地址)并不一致。

Tensor on Gpu

if torch .cuda.is_available():
	device= torch.device("cuda")
	y=torch.ones_like(x,device=device)  //新建
	x=x.to(device)   //转换
	z=x+y  //同在gpu上相加
	print(z.to('cpu',torch.double))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值