机器学习day04
机器学习day04
深度学习简介
什么是深度学习
机器学习是实现人工智能的一种途径。 深度学习是机器学习的一个子集,也就是说深度学习是实现机器学习的一种方法。


传统机器学习算术依赖人工设计特征,并进行特征提取,而深度学习方法不需要人工,而是依赖算法自动提取特征。 深度学习模仿人类大脑的运行方式,从经验中学习获取知识。这也是深度学习被看做黑盒子,可解释性差的原因。
应用场景

发展历史
- 符号主义 20世纪50-70:专家系统占主导 1950:图灵设计国际象棋程序 1962:IBM Arthur Samuel 的跳棋程序战胜人类高手(人工智能第一次浪潮)
- 统计主义 20世纪80-2000:主要用统计模型解决问题 •1993:Vapnik提出SVM •1997:IBM 深蓝战胜卡斯帕罗夫(人工智能第二次浪潮)
- 神经网络 21世纪初期:神经网络、深度学习流派 •2012: AlexNet深度学习的开山之作 •2016:Google AlphaGO 战胜李世石(人工智能第三次浪潮)
- 大规模预训练模型 2017-至今:大规模预训练模型 2017年,自然语言处理NLP的Transformer框架出现 2018年,Bert和GPT的出现 2022年,chatGPT的出现,进入到大模型AIGC发展的阶段
优缺点
1.优点
- 精度⾼,性能优于其他的机器学习⽅法,甚⾄在某些领域超过了⼈类
- 随之计算机硬件的发展,可以近似任意的⾮线性函数
- 近年来在学界和业界受到了热捧,有⼤量的框架和库可供调。
- 缺点
- ⿊箱,很难解释模型是怎么⼯作的
- 训练时间⻓,需要⼤量的计算⼒
- ⽹络结构复杂,需要调整超参数多
- ⼩数据集上表现不佳,容易发⽣过拟合
PyTorch使用

PyTorch:一个Python 深度学习框架,它将数据封装成张量(Tensor)来进行处理。PyTorch 中的张量就是元素为同一种数据类 型的多维矩阵。在PyTorch中,张量以"类" 的形式封装起来,对张量的一些运算、处理的方法被封装在类中。
Pytorch的安装: pip install torch==2.1.0 -i https://pypi.tuna.tsinghua.edu.cn/simple
1.1张量基本创建方式
- torch.tensor 根据指定数据创建张量
- torch.Tensor 根据形状创建张量, 其也可用来创建指定数据的张量
- torch.IntTensor、torch.FloatTensor、torch.DoubleTensor 创建指定类型的张量
张量
- 可以理解为多维矩阵
- 标量:0维张量
- 向量:1维张量
- 矩阵:2维张量
1.2创建张量的方式
根据指定的数据创建张量
- 根据标量创建张量
data = 10
tensor = torch.tensor(data)
print(f'根据标量生成的张量:\n{tensor}')
- 根据numpy数组创建张量
data = np.random.randn(2,3) #创建的2行3列的数组
data = torch.tensor(data)
print(f'根据numpy数组创建张量:\n{data}')
- 根据列表创建张量
data = [1,2,3]
data = torch.tensor(data)
print(f'根据列表创建张量:\n{data}')
data = [[1,2,3],[4,5,6]]
data = torch.tensor(data)
print(f'根据列表创建张量:\n{data}')
根据形状创建张量
torch.Tensor(2,3)
- 创建2行3列的张量, 默认 dtype 为 float32
data = torch.Tensor(2, 3)
print(data)
- 注意: 如果传递列表, 则创建包含指定元素的张量
data = torch.Tensor([10])
print(data)
data = torch.Tensor([10, 20])
print(data)
根据指定类型创建张量
torch.IntTensor:
data = torch.IntTensor(2,3)
print(f'创建int32类型的张量:\n{data}')
torch.ShortTensor
torch.LongTensor
torch.FloatTensor:dtype为Float的张量
data = torch.FloatTensor(2,3)
print(f'创建Float类型的张量:\n{data}')
torch.DoubleTensor
注意:如果传递的元素类型不正确,会被进行类型转换
data = torch.IntTensor([[2.5,3.5],[3.4,5.5]])
print(data)
tensor([[2, 3],
[3, 5]], dtype=torch.int32)
1.3创建线性张量和随机张量
1.3.1创建线性张量
torch.arange(start, end, 步长)
torch.linspace(start, end, 个数)
1.3.2创建随机张量
torch.randn(行,列)
torch.randint(start, end,size)
- 在指定区间按照步长生成元素 [start, end, step)
data = torch.arange(0, 10, 2)
print(data)
1.3.3设置随机数种子
torch.manual_seed()
torch.random.initial_seed()
# 1. 创建随机张量
data = torch.randn(2, 3) # 创建2行3列张量
print(data)
# 查看随机数种子
print('随机数种子:', torch.random.initial_seed())
# 2. 随机数种子设置
torch.random.manual_seed(100)
data = torch.randn(2, 3)
print(data)
print('随机数种子:', torch.random.initial_seed())
1.4创建0-1的张量
- 创建全0张量
# 1. 创建指定形状全0张量
data = torch.zeros(2, 3)
print(data)
# 2. 根据张量形状创建全0张量
data = torch.zeros_like(data)
print(data)
- 创建全1张量
# 1. 创建指定形状全1张量
data = torch.ones(2, 3)
print(data)
# 2. 根据张量形状创建全1张量
data = torch.ones_like(data)
print(data)
- 创建指定值的张量
# 1. 创建指定形状全1张量
data = torch.ones(2, 3)
print(data)
# 2. 根据张量形状创建全1张量
data = torch.ones_like(data)
print(data)
1.4.1创建方式
直接创建,自己指定形状
根据已有的张量形状创建
1. 创建指定形状指定值的张量
data = torch.full([2, 3], 10)
print(data)
# 2. 根据张量形状创建指定值的张量
data = torch.full_like(data, 20)
print(data)

从机器学习过渡到深度学习,虽然都是初步的就是了……
浙公网安备 33010602011771号