数据操作+数据预处理

这篇博客探讨了深度学习中张量的基础操作,包括张量的形状、重塑、初始化、数值分配、算术运算、连接、逻辑运算以及内存管理。此外,还介绍了将张量转换为numpy数组和变成常量的方法。
摘要由CSDN通过智能技术生成
import torch
import numpy

#1.张量表示一个数值组成的数组,这个数组可能有多个维度

x=torch.arange(12)
print(x)
#tensor([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11])

#2.张量的属性shape来访问张量的形状和张量中元素的总数

print(x.shape)
#torch.Size([12])
print(x.numel())
#12

#3.要改变一个张量的形状而不改变元素数量和元素值,我们可以调用reshape函数。

X =x  .reshape(3,4)
print(X)
"""tensor([[ 0,  1,  2,  3],
        [ 4,  5,  6,  7],
        [ 8,  9, 10, 11]])
"""

#4.使用全0、全1、其他常量或者从特定分布中随机采样的数字

print(torch.zeros((2,3,4)))#高,行,列
"""tensor([[[0., 0., 0., 0.],
         [0., 0., 0., 0.],
         [0., 0., 0., 0.]],

        [[0., 0., 0., 0.],
         [0., 0., 0., 0.],
         [0., 0., 0., 0.]]])
print(torch.ones(2,3))
tensor([[1., 1., 1.],
        [1., 1., 1.]])"""

#5.通过提供包含数值的Python列表(或嵌套列表)来为所需张量中的每个元素赋予确定值

print(torch.tensor([[[ 0,  1,  2,  3],
        [ 4,  5,  6,  7],
        [ 8,  9, 10, 11]]]).shape)
#torch.Size([1, 3, 4])

#6.常见的标准算术运算符(+、-、*、/和**)卢都守以被升级为按元素运算

x=torch.tensor([1,2,3,4])
y=torch.tensor(([2.0,4,5,6]))
print(x+y)#tensor([ 3.,  6.,  8., 10.])
print(x-y)#tensor([-1., -2., -2., -2.])
print(x*y)#tensor([ 2.,  8., 15., 24.])
print(x/y)#tensor([0.5000, 0.5000, 0.6000, 0.6667])
print(x**y)#tensor([1.0000e+00, 1.6000e+01, 2.4300e+02, 4.0960e+03])
z=torch.tensor([1.0,2,3,4])
print(torch.exp(z))#e的多少次方
#tensor([ 2.7183,  7.3891, 20.0855, 54.5981])

#7.把多个张量连接在一起

x=torch.arange(12,dtype=torch.float32).reshape((3,4))
y=torch.tensor([[ 0,  5,  2,  3],
        [ 4,  5,  8,  7],
        [ 2,  4, 10, 1]])
print(torch.cat((x,y),dim=0))
"""tensor([[ 0.,  1.,  2.,  3.],
        [ 4.,  5.,  6.,  7.],
        [ 8.,  9., 10., 11.],
        [ 0.,  5.,  2.,  3.],
        [ 4.,  5.,  8.,  7.],
        [ 2.,  4., 10.,  1.]])"""
print(torch.cat((x,y),dim=1))
"""tensor([[ 0.,  1.,  2.,  3.,  0.,  5.,  2.,  3.],
        [ 4.,  5.,  6.,  7.,  4.,  5.,  8.,  7.],
        [ 8.,  9., 10., 11.,  2.,  4., 10.,  1.]])"""

#8.通过逻辑运算符构建二元张量

x=torch.tensor([1,2,3,4])
y=torch.tensor(([2.0,4,5,6]))
print(x==y)
#tensor([False, False, False, False])

#9.张量操作

y=torch.tensor([[ 0,  5,  2,  3],
        [ 4,  5,  8,  7],
        [ 2,  4, 10, 1]])
print(y[-1])#取最后一行
print(y[1:2])#取第1行
y[1,2]=100#第1行第2列的元素赋值
print(y)
"""tensor([ 2,  4, 10,  1])
tensor([[4, 5, 8, 7]])
tensor([[  0,   5,   2,   3],
        [  4,   5, 100,   7],
        [  2,   4,  10,   1]])"""

#10.内存问题

y=torch.tensor([ 2,  4, 10,  1])
x=torch.arange(4)
before=id(y)
y+=x
print(id(y)==before)
#True
y=y+x
print(id(y)==before)
#False
z=torch.zeros_like(y)
print(id(z))
#2378792739072
z[:]=x+y
print(id(z))
#2378792739072

#11.转换为numpy张量,转变为常量

A=x.numpy()
B=torch.tensor(A)
print(type(A),type(B))
#<class 'numpy.ndarray'> <class 'torch.Tensor'>
c=torch.tensor([3.5])
print(c,c.item(),float(c),int(c))
#tensor([3.5000]) 3.5 3.5 3
x=torch.tensor([2,3,4,5])
print(x.sum())#tensor(14)
y=torch.arange(12).reshape((3,4))
print(y.sum())#tensor(66)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值