Pytorch框架下深度学习

零基础,以代码的形式学习在Pytorch框架下的深度学习

第一章

第一节

数据操作

import torch
import numpy as np
x = torch.arange(12)#生成0-11的12个int型张量
print(x.shape)#张量的形状
print(x.numel())#张量的大小

X = x.reshape(3,-1)
#1.对张量重构后应该开辟一块新的空间储存,直接x.reshape()是无法修改x的形状的
#2.reshape()可以选取自己指定的行或列,剩下的列或行,直接给定-1,会自动根据张量大小匹配
print(X)

#创建全0,全1,或随机的张量
b = torch.zeros((2,3,4,5))#后两位(4,5)是每个矩阵的大小,往前拓宽维度
print(b)
c = torch.ones(2,3,4)
print(c)
d = torch.full((2,3),2)
print(d)
#创建随机张量(从标准差为1,均值为0的高斯(正胎)分布中随机采样)
print(torch.randn(3,4))

#运算符
#实际就是对相同形状的张量,按元素进行一些运算
x = torch.tensor([1.0,2,4,8])
y = torch.tensor([2,2,2,2])
print(x+y,x-y,x*y,x/y,x**y)
print(torch.exp(x))

#张量连接
x = torch.arange(12,dtype=torch.float32).reshape(3,4)
y = torch.tensor([[2.0,1,4,3,],[1,2,3,4],[4,3,2,1]])
print(torch.cat((x,y),0))#顺着行拼接
print(torch.cat((x,y),1))#顺着列拼接

#用判断来得到bool值
print(x == y)

#对张量多有酸素求和
print(x.sum())#产生的是一个单元素的张量tensor(66.)

#张量的广播机制(和numpy广播机制是一样的)
x = torch.arange(3).reshape(3,1)
y = torch.arange(2).reshape(1,2)
print(x+y)
#x为了迎合y的列,自动将第0列的值赋给第1列;同样,y为了迎合x的行,自动将第0行的值赋给第1,2行
#得到两个3*2的张量和在按元素相加

#索引和切片
x = torch.tensor([[1,2,3,4],
                  [5,6,7,8],
                   [9,10,11,12]])
print(x[-1])#对最后一行切片
print(x[:,-1])#对最后一列切片
print(x[0:2])#对第0到1行切片
print(x[:,0:2])#对0-1列切片

#节省内存
#通常在机器学习中参数需要的内存较大,倾向于在原地址进行操作
x = torch.tensor([1,2,3,4])
y = torch.tensor([5,6,7,8])
x_before_id = id(x)
x = x+y
print(x_before_id == id(x))#输出结果是False

#如果后续不需要就的x张量
x += y
print(x_before_id == id(x))#输出结果是True

#如果后续还要用的到x的张量,可以创建新的变量
z = torch.zeros_like(x)
z_before_id = id(z)
z[:] = x + y#使用切片表示法
print(z_before_id == id(z))#输出结果是True

#转化为其他的python对象
#numpy<-->torch张量互换。虽然张量的形式换了,但是地址都指向同一片空间,所以对张量进行操作时,两种类型的张量值都会改变
A = x.numpy()
B = torch.tensor(A)
print(type(A),type(B))
#通过这种转换可以对tensor张量运用numpy的工具进行一些矩阵操作
#如果张量的大小为1,可以将该张量转化为洽谈的python数据类型
a = torch.tensor([3.5])
print(a,a.item(),float(a),int(a))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值