前言
在当今信息时代,机器学习和深度学习作为人工智能领域的重要分支,正日益成为科技领域的热门话题。为了帮助读者更好地了解机器学习的基础知识,本文将重点介绍PyTorch深度学习基础以及Logistic回归模型的相关内容。通过深入探讨PyTorch中的Tensor对象、运算操作、自动微分等核心概念,读者将能够建立起对深度学习框架的基本理解。此外,我们还将详细介绍Logistic回归模型的原理、应用和优化算法,帮助读者在实践中更好地运用这一经典的机器学习模型。希望本文能为初学者提供一个清晰的学习路径,让大家更快地掌握机器学习的基础知识,并在未来的学习和实践中取得更好的成果。
一、pyTorch深度学习基础
1.1、Tensor对象及运算
在数学和计算机科学中,tensor(张量)是一种多维数组,它可以表示向量、矩阵和更高维度的数组。在机器学习和深度学习中,tensor是存储和计算数据的基本对象。tensor对象可以进行各种数学运算,例如加法、减法、乘法和除法。这些运算可以用于计算两个或多个tensor之间的元素级操作,也可以用于计算tensor的标量积、向量积、矩阵乘法等更复杂的运算。
总之,tensor对象及其运算是机器学习和深度学习中重要的工具,用于存储和计算数据,支持各种数学运算和算法实现。下面我们加上代码来具体介绍tensor对象及运算
import torch
import numpy as np
# 创建两个标量tensor
print('torch.tensor默认为:{}'.format(torch.tensor(1).dtype))
print('torch.Tensor默认为:{}'.format(torch.Tensor(1).dtype))
# 用列表构建tensor,指定数据类型为float64
a = torch.tensor([[1,2],[3,4]], dtype=torch.float64)
# 用ndarray构建tensor,指定数据类型为uint8
b = torch.tensor(np.array([[1,2],[3,4]]), dtype=torch.uint8)
print(a)
print(b)
# 通过device参数指定使用的设备(这里指定为cuda:0,即GPU上)
cuda0 = torch.device('cuda:0')
c = torch.ones((2,2), device=cuda0)
print(c)
# 将c tensor从GPU移动到CPU,并同时改变数据类型为double
c = c.to('cpu', torch.double)
print(c.device)
# 将c tensor从GPU移动到CPU,并同时改变数据类型为double
c = c.to('cpu', torch.double)
print(c.device)
# 将b tensor从CPU移动到GPU,并同时改变数据类型为float
b = b.to(cuda0, torch.float)
print(b.device)
# 逐元素相乘
a = torch.tensor([[1,2],[3,4]])
b = torch.tensor([[1,2],[3,4]])
c = a * b
print("逐元素相乘:", c)
# 矩阵乘法
c = torch.mm(a, b)
print("矩阵乘法:", c)
# 将a tensor中小于2的元素设置为2,大于3的元素设置为3
a = torch.tensor([[1,2],[3,4]])
torch.clamp(a, min=2, max=3)
# 对a tensor中的元素进行四舍五入
a = torch.Tensor([-1.1,0.5,0.501,0.99])
torch.round(a)
# 对a tensor中的元素进行双曲正切函数计算
a = torch.Tensor([-3,-2,-1,-0.5,0,0.5,1,2,3])
torch.tanh(a)
# 创建一个从0开始、步长为1的tensor
print(torch.arange(5))
# 创建一个从1开始、到5结束(不包括5)、步长为2的tensor
print(torch.arange(1,5,2))
# 在0到5之间创建10个均匀间隔的点
print(torch.linspace(0,5,10))
# 创建一个大小为3x3的全1矩阵
print(torch.ones(3,3))
# 创建一个大小为3x3的全0矩阵
print(torch.zeros(3,3))
# 创建一个大小为3x3的在[0,1)范围内均匀分布的随机tensor
torch.rand(3,3)
# 创建一个大小为3x3的标准正态分布随机tensor
torch.randn(3,3)
# 创建一个大小为