两分钟理解神经网络中的Tensor张量

1.张量

神经网络中的张量可以看成一个多维数组。与numpy的ndarray相似。tensor在GPU上进行运算而ndarray在CPU上。
下面以张量就是多维数组这一前提,进行张量数据结构属性一 一验证。

1.1 tensor数据类型

张量的数据类型和numpy.array基本一一对应,但是不支持str类型。

包括:

torch.float64(torch.double),

torch.float32(torch.float),

torch.float16,

torch.int64(torch.long),

torch.int32(torch.int),

torch.int16,

torch.int8,

torch.uint8,

torch.bool

一般神经网络建模使用的都是torch.float32类型。
输入:

# 指定数据类型
i = torch.tensor(1,dtype = torch.int32);print(i,i.dtype)
x = torch.tensor(2.0,dtype = torch.double);print(x,x.dtype)

输出:

tensor(1) torch.int64
tensor(2.) torch.float32
tensor(True) torch.bool

1.2 tensor维度

不同类型的数据可以用不同维度(dimension)的张量来表示。

标量为0维张量,向量为1维张量,矩阵为2维张量。

彩色图像有rgb三个通道,可以表示为3维张量。

视频还有时间维,可以表示为4维张量。

可以简单地总结为:有几层中括号,就是多少维的张量。
输入:

tensor4 = torch.tensor([[[[1.0,1.0],[2.0,2.0]],[[3.0,3.0],[4.0,4.0]]],
                        [[[5.0,5.0],[6.0,6.0]],[[7.0,7.0],[8.0,8.0]]]])  # 4维张量
print(tensor4)
print(tensor4.dim())

输出:

tensor([[[[1., 1.],
          [2., 2.]],

         [[3., 3.],
          [4., 4.]]],


        [[[5., 5.],
          [6., 6.]],

         [[7., 7.],
          [8., 8.]]]])
4

一维是一个数列,二维是矩阵,我个人感觉从3维开始就没什么…直观的感觉了。

1.3tensor的尺寸

可以使用 shape属性或者 size()方法查看张量在每一维的长度.

可以使用view方法改变张量的尺寸。

如果view方法改变尺寸失败,可以使用reshape方法.
直接用reshape改变向量维度。
输入:

vector = torch.tensor([1.0,2.0,3.0,4.0])
print(vector.size())
print(vector.shape)
matrix = torch.tensor([[1.0,2.0],[3.0,4.0]])   #2行2列
print(matrix)        
test = matrix.reshape(1, 4) #1行4列
print(test)

输出:

torch.Size([4])
torch.Size([4])
tensor([[1., 2.],
        [3., 4.]])
tensor([[1., 2., 3., 4.]]) 

1.4 tensor的其他技巧

输入:

# item方法和tolist方法可以将张量转换成Python数值和数值列表
scalar = torch.tensor(1.0)
s = scalar.item()
print(s)
print(type(s))

tensor = torch.rand(2,2)
t = tensor.tolist()
print(t)
print(type(t))

输出:

1.0
<class 'float'>
[[0.2582204341888428, 0.4571046829223633], [0.7230430841445923, 0.7788170576095581]]
<class 'list'>

总结

张量就是一个多维数组的数据结构,可以对其进行各种操作。

参考:
https://github.com/lyhue1991/eat_pytorch_in_20_days

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

梦想当极客的小芦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值