机器学习和深度学习
文章平均质量分 68
机器学习和深度学习基础
B.Bz
毛毛你是个好姑娘
展开
-
PyTorch----实现手写数字的识别
加载手写数字的数据组成训练集和测试集,这里已经下载好了,所以download为Falseimport torchvision# 是否支持gpu运算# device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')# print(device)# print(torch.cuda.is_available())# 加载训练集的数据 使用torchvision自带的MNIST数据集train_dataset =原创 2022-05-30 21:05:03 · 3154 阅读 · 6 评论 -
PyTorch----神经网络的建立
神经网络就是很多的线性函数和非线性函数组成的复合函数。自定义类继承torch.nn.Module自定义类中实现__init__和forward()函数__init__定义神经网络结构forward()模型的正向传播class NeuralNet(torch.nn.Module): """自定义神经网络""" def __init__(self,input_size,hidden_size): # 参数为输入维度 和 隐藏层维度 # 调用父类初始化函数原创 2022-05-21 12:26:47 · 292 阅读 · 0 评论 -
PyTorch----激活函数
什么是激活函数?在神经网络中我们经常使用线性运算来解决分类问题,这就需要激活函数来解决非线性问题 传统的全连接网络是让数据不断的通过线性函数和激活函数层,从而得到最终的预测结果。Sigmoid函数sigmoid函数是最经典、最早使用的激活函数,公式如下:ρ=11+e−z\rho = \frac{1}{1+ e^{-z}}ρ=1+e−z1激活函数Sigmoid在定义域内处处可以求导,当输入一个较小或者较大的数据时,该函数的导数会变得很小,梯度趋近于0。如果每次梯度值都减小,神原创 2022-05-21 11:55:21 · 3803 阅读 · 0 评论 -
PyTorch----Softmax函数与交叉熵函数
二分类问题和多分类问题二分类问题: 分类任务中有两个类别。比如前面感知机识别香蕉还是苹果,一般会训练一个分类器,输入一幅图像,输出该图像是苹果的概率为p,对p进行四舍五入,输出结果为0或者1,这就是经典的二分类问题。多分类问题: 和二分类任务基本相似,最后的输出有多个标签(>=2),需要建立一个分类器可以识别多种水果。在二分类问题中,我们可以用max函数 ,因为只有两个标签,非黑即白。但是在原创 2022-05-21 11:24:08 · 2986 阅读 · 0 评论 -
PyTorch----数据预处理
为什么要进行数据预处理? 有时候想要识别一个东西,在照明条件良好的情况下可能可以识别成功,但是在照明不好的时候模型没有训练过就可能识别不出来,所以使用图像的数据增强,给图片加上一点干扰来进行训练,可以使模型的精度提升。使用什么来进行数据预处理?torchvision.transform是包含了常用的图像变化方法的工具包主要用于图像的预处理的数据增强数据预处理数据的预处理使用torchvision.transforms.Compose()类原创 2022-05-20 20:06:36 · 1683 阅读 · 0 评论 -
PyTorch----数据加载器
什么是数据加载器?深度学习是由数据支撑起来的,所以我们一般在做深度学习的时候往往伴随着大量、复杂的数据。如果把所有的数据全部加载到内存上,容易把电脑的内存“撑爆”,所以要分批次一点点加载数据每一种深度学习的框架都有自己所规定的数据格式,数据加载器就有了必要的作用数据加载器就是把大量的数据,分批次加载和处理成框架所需要的数据格式数据分批次加载使用PyTorch内置的模块 torch.utils.data.DataLoader()数据加载器:参数dataset:数据集batch_size原创 2022-05-19 20:52:55 · 1870 阅读 · 0 评论 -
PyTorch----从零实现乳腺癌预测
分类问题使用线性回归解决的都是线性问题,而乳腺癌预测是分类问题。那么PyTorch是怎么求解一个非线性问题?乳腺癌预测根据血常规的化验预测,查询出规律。有30多个特征,输出0或1 是否患有乳腺癌。一、获取数据import pandas as pd# 读取乳腺癌的数据df = pd.read_csv('./breast_cancer.csv')# 数据中的30个特征X = df[df.columns[0:-1]].values# 数据的标签 0为患有乳腺癌,1为没有乳腺癌原创 2022-05-19 16:36:24 · 1416 阅读 · 1 评论 -
机器学习----PyTorch模型训练
PyTorch在前面使用纯手工做了线性回归,线性回归的问题其实就是求解损失函数最小的情况下的w值。在PyTorch里面很多的函数都进行了封装,我们直接用就可以。损失函数手写损失函数def loss(y, y_pred): """损失函数""" # (真实值 - 预测值)^2 的平均值 return ((y_pred - y)**2).mean()PyTorch封装的损失函数损失函数就是计算 (预测值-真实值)^2的平均值(均方误差)torch.nn.MSELoss()方原创 2022-05-18 21:09:26 · 1606 阅读 · 0 评论 -
机器学习----PyTorch正向传播与反向传播
正向传播神经网络本质上就是一个复杂且有很多参数的复合函数,数据为函数的输入,结果为函数的输出。正向传播就是通过函数的输入以及神经网络,得到函数的输出。通常用来验证当前的参数是否是最优解,或者已经训练好的模型用来检测。例如函数: y=w∗xy = w*xy=w∗x通过调整过的参数www和数据xxx传入进去:获取到预测值 y′y'y′获取到损失值:loss=(y−y′)2loss = (y - y')^2loss=(y−y′)2import torchdef forward原创 2022-05-18 18:03:24 · 728 阅读 · 0 评论 -
机器学习----PyTorch中的梯度计算
什么是梯度?在一元函数中,某点的梯度标的就说某点的导数. 在多元函数中某点的梯度表示的是由每个自变量所对应的偏导数所组成的向量在前面的线性回归中 就像y = wx + b方程中求出w参数最优的解,就需要对w参数进行偏导数的求取,然后通过偏导数的值来调整w参数以便找到最优解。自动计算梯度和偏导数在PyTorch中可以使用torch.autograd.backward()方法来自动计算梯度在定义张量时,可以指定requires_grad=True表示这个张量可以求偏导数import原创 2022-05-18 17:16:19 · 3224 阅读 · 2 评论 -
机器学习----PyTorch入门
PyTorchPyTorch是一个开源的python机器学习库PyTorch的前身是Torch,其底层和Torch框架一样,使用Python重新写了很多内容更加灵活,支持动态图,是一个以Python优先的深度学习框架,不仅能实现强大的GPU加速,同时还支持动态神经网络。张量PyTorch中所有的操作都是在张量的基础上进行的,可以说是PyTorch的基本单位一、 张量的定义1. 创建随机的张量初始化一个符合正态分布的张量randn()方法参数:张量的维度import原创 2022-05-18 16:44:15 · 4693 阅读 · 0 评论 -
机器学习----感知机(神经网络的基础)
什么是感知机?机器学习中有分类和回归两大问题:回归预测线性问题,例如房子价格、每一年的降水量 。分类给物体分类,输出之后输出判断是一个香蕉还是一个苹果。感知机是神经网络的基础引入问题颜色越红,形状越圆的是苹果颜色越黄,形状为长条的是香蕉这是数据分布的散点图,怎么才能找到一个线来把香蕉和苹果分类出来呢?决策边界y=mx + b是线性回归预测的数据都是分布在线上的点分类问题产生一个决策线,在决策线上方的是一种输出(苹果),在决策线下方的又是一种输出(香蕉)。决策边界线公式原创 2022-05-17 21:01:02 · 1099 阅读 · 2 评论 -
机器学习----纯手撸线性回归代码
什么是线性回归?线性回归是利用函数对一个或多个自变量和因变量之间关系进行建模的一种回归分析, 简单来说线性回归其实是试图找到自变量与因变量之间的关系比如房子的面积和价格:房子的面积越大,房子的价格就越高假设房子的面积和价格符合方程y = mx + b准备房子面积和价格的数据import numpy as npdata = np.array([[80,200], [95,230], [104,245],原创 2022-05-16 21:13:32 · 594 阅读 · 0 评论