深度学习--数学基础(1)

深度学习–数学基础(1)

*2021-04-21 22:56
在学习深度学习之前,需具备良好的数学基础,主要包括线性代数、微积分、概率论三个数学分支。

1.数据表示–标量、向量、矩阵、张量

 (1)标量(scalar):标量就是一个简单的只有大小、没有方向的数字。在计算机专业技术中,标量可以通过一个固定类型的变量来表示。
 (2)向量(vector):向量就是一列数,是由一组数组组成的有序数组,同时具有大小和方向,通过一个次序索引,我们可以确定每个单独的数。下面就是一个行向量: x=[x1, x2, …, xn]。
 (3)矩阵(matrix):矩阵是一个二维数组,其中每个元素可以被两个索引所确定,aij表示矩阵A中第i行,第j列。
 (4)张量(tensor):在深度学习中,主要讨论的坐标往往是超过两维的数组。一般地,如果一个数组中的元素分布在若干维坐标的规则网格中,我们将其称为张量。张量通过对应维度个数的索引来确定张量内部的值。

2. 张量的常见操作

 在深度学习中,我们将待处理的数据规范化为特定维度的张量。例如,不进行批处理时,有如下的对应关系:
 (1) 彩色图像可以看成是一个三维张量:图像的三个颜色通道(红、绿、蓝)、图像的高、图像的宽。
 (2)视频可以看成是一个四维张量:视频的时间帧方向、每一帧图像的颜色通道、宽、高。
 (3)三维场景可以看成一个四维张量:场景中每一点的信息编码轴、场景的高、场景的长、场景的宽。
  对不同的张量有不同的运算方式,但是下面这几个操作是常用的:索引(indexing)切片(slicing)连接(joining)换位(mutating)

3. 张量的基本操作(基于PyTorch)

(1)初始化一个张量

import torch
x = torch.rand(5,3)   #生成一个随机的5×3的张量x
print(x)
print(x.size())   #输出张量x的大小

输出结果为:
在这里插入图片描述

(2)arange,range,linspace的使用

torch.arange(start, end, step)返回一个以start为首项, 以end为尾项,以step为公差的等差数列。不包含end。

print(torch.arange(1,21,2))

运行结果:
在这里插入图片描述
torch.range(start, end, step)
返回一个以start为首项, 以end为尾项,以step为公差的等差数列。但是包含end。

print(torch.range(1, 21, 2))

运行结果:

在这里插入图片描述
torch.linspace(start, end, steps)
返回一个以start为首项, 以end为尾项,返回一个1维张量,包含在区间start和end上均匀间隔的step个点。

print(torch.linspace(1,15,5))

运行结果:

在这里插入图片描述

(3)张量基本运算操作

x = torch.rand(3,2)
y = torch.rand(3,2)
print(x)
print(y)
print(x+y)
print(torch.add(x,y))
print(y.add_(x))
print(y)

运行结果:

tensor([[0.2059, 0.0645],
        [0.0310, 0.3479],
        [0.6152, 0.1724]])
tensor([[0.0874, 0.5010],
        [0.6648, 0.1793],
        [0.9541, 0.7467]])
tensor([[0.2933, 0.5654],
        [0.6958, 0.5271],
        [1.5693, 0.9191]])
tensor([[0.2933, 0.5654],
        [0.6958, 0.5271],
        [1.5693, 0.9191]])
tensor([[0.2933, 0.5654],
        [0.6958, 0.5271],
        [1.5693, 0.9191]])
tensor([[0.2933, 0.5654],
        [0.6958, 0.5271],
        [1.5693, 0.9191]])

Process finished with exit code 0

a = torch.rand(3,2)
print(a)
print(a[:,1])   #支持索引操作,取第二列
print(a.size())
b=a.view(6)
print(b)
print(b.size())

运行结果:

tensor([[0.6872, 0.8567],
        [0.0259, 0.6550],
        [0.8212, 0.6122]])
tensor([0.8567, 0.6550, 0.6122])
torch.Size([3, 2])
tensor([0.6872, 0.8567, 0.0259, 0.6550, 0.8212, 0.6122])
torch.Size([6])

4.小结

  在学习深度学习之前,需要一定的数学基础,其中张量这一概念就十分重要,可以简单的类比成矩阵或者C语言里面的数组概念,方便理解。对张量执行的一系列操作需要从实际问题出发,用到什么就学什么。下一小节将介绍Numpy的使用。

  • 9
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值