自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(24)
  • 收藏
  • 关注

原创 【机器学习】【深度学习】批量归一化(Batch Normalization)

归一化指的是将数据缩放到一个固定范围内,通常是 [0, 1],而标准化是使得数据符合标准正态分布。归一化的作用是使不同特征具有相同的尺度,从而使模型训练更加稳定和快速,尤其是对于使用梯度下降法的算法。而标准化的作用加快模型收敛速度,提高模型的性能。批量归一化用于加速神经网络的训练并提高模型的稳定性。它在每个批次的数据上进行标准化,通过对每层的输入进行归一化处理,使得网络中间层的激活值保持在一个较小的范围内,有助于加速模型的收敛,同时减少了梯度消失和爆炸的问题。所以批量归一化特别适合深层网络。

2024-05-28 20:51:39 590

原创 【机器学习】【深度学习】正则化(Regularization)

过拟合意味着模型具有很高的方差(高方差意味着模型对训练数据中的微小变化非常敏感),当你的模型中的参数越多,模型的灵活性就越大(拟合能力强),在模型中调整的东西越多,就越有可能有高方差。例如我们现在要把右图的灰色和绿色点区分开,需要使用神经网络进行拟合函数,若函数有n次项,那么预测函数就会有n个弯曲点,弯曲点越多在某种程度上表示拟合度更大,所以我们需要减少高次项或者其权重(高次项的系数)。正则化有两种方式,第一种是限制模型的灵活性,例如有L1正则化,L2正则化,Dropout和Early Stoping。

2024-05-22 16:02:00 891

原创 【Python】【PyTorch】超参数对于训练的影响

示例EpochsBatch SizeLearning Rate总结Epochs(训练轮数)Test Accuracy: 增加训练轮数可以提高测试准确率,特别是在Test Accuracy尚未收敛时。训练轮数过多可能导致过拟合,反而降低测试的准确率。当训练轮数合适时,测试准确率会逐渐提高并趋于稳定。Test Loss: 在模型尚未收敛时,增加训练轮数可以降低测试损失。但过多的训练轮数可能导致过拟合,进而测试损失上升。当训练轮数合适时,测试损

2024-05-20 15:17:50 496

原创 【Python】【机器学习】在训练代码中建立混淆矩阵

for t, p in zip(targets, preds)是同时遍历targets(真实标签)和真实标签对应的preds(预测标签),然后在conf_matrix的t.item()和p.item()位置更新混淆矩阵,也就是+=1。outputs.argmax(1)用于获取输出的最大预测值(也就是Top-1),output是二维张量:[batch_size, 类别数];preds是一维张量[batch_size],相当于提取出一个类别。

2024-05-18 10:12:00 583

原创 【Python】【机器学习】混淆矩阵的各项指标计算

False Negative (FN) = **明明是正例,但很不幸,我猜它是反例的数量。精确率(Precision)精确率表示**模型预测为正类的样本中,实际为正类的比例。**它衡量了模型在正类预测中的准确性。召回率(Recall)召回率表示**实际为正类的样本中,被模型正确预测为正类的比例。True Negative (TN) = **是反例,且很幸运我也猜它是反例的数量。True Positive (TP) = **是正例,且很幸运我也猜它是正例的数量。**此处4表示有4张图片是猫,且我也猜它是猫。

2024-05-17 14:08:45 994

原创 深度学习中的一些概念

欠拟合是指模型没有很好地捕获到数据特性,不能完整地表示数据的全部信息,也就是模型的复杂度低于应有的水平。例如,假设一个数据集实际上服从二阶多项式分布,但我们使用一阶线性模型去拟合它,这样的模型就会出现欠拟合。由于模型过于简单,它在训练集上的预测表现就会很差。

2024-05-12 20:53:00 354

原创 【训练与预测】02 - 完整的模型验证套路

验证一个模型就是指使用已经训练好的模型,然后给它提供输入。

2024-05-09 17:47:59 629

原创 解决Windows11终端中的程序运行结束后不会自动关闭

一开始我以为这是IDE搞的鬼,结果我确保IDE设置正确,调试结束后直接关闭cmd窗口,可是还是会出现这个问题。但是在我的其他电脑或者虚拟机中就没有这个问题。于是我找了找Windows11的Terminal设置,在其深处藏着一个选项。找到Terminal中的配置文件-默认值-高级-关闭行为,把这个选项改为自动,以上问题就解决了,之前这里的选项是“从不自动关闭”。

2024-05-08 17:33:03 356

原创 【训练与预测】01 - 完成的模型训练套路

当在训练神经网络时,如果使用了Dropout,那么在训练阶段,每次前向传播都会随机关闭网络的一部分神经元(即丢弃),以防止过拟合。然而,在评估或测试过程中,你需要使用全部神经网络,因此dropout应该被关闭,这就需要用到网络对象名.eval()。网络对象名.train()和网络对象名.eval()是用于开启网络的训练模式和测试模式,但是没有写这两段代码时,训练也没有问题,这是怎么回事?因此,虽然在不使用train()和eval()切换模式的情况下,你的神经网络依然可以运行,但是可能无法达到最优表现。

2024-05-07 18:09:35 854

原创 【Python】在Windows Server上部署Flask后端服务器

想要在Windows Server上部署flask应用,当然不能只下一个anaconda配完环境之后直接启动py文件,这样的话后台会有一段警告,意思就是直接使用app.run()开启的服务器只是一个开发服务器,官方提示不要把它放到生产环境,需要使用一个WSGI服务器。

2024-05-05 20:53:27 538 1

原创 【神经网络】10 - 网络模型的保存与读取

在训练模型时,训练完成后我们需要保存模型,使用模型预测时我们需要读取模型。为什么要保存和读取模型?

2024-05-04 22:05:39 519

原创 【神经网络】09 - 优化器 torch.optim

优化器是用于更新和管理模型参数以改进模型性能的一种工具。在机器学习和深度学习中,优化器的主要任务是通过调整模型的参数来最小化或最大化特定的目标函数。在许多情况下,这个目标函数是一个损失函数,我们的目标是将其最小化。在 PyTorch 中,torch.optim 是一个包含了各种优化算法的模块,用于帮助开发者在训练神经网络时更方便地更新和管理模型参数。当我们训练神经网络时,我们的目标是找到一组模型参数,可以最小化或最大化某个损失函数或者目标函数。

2024-05-02 22:26:49 1072

原创 【神经网络】08 - 损失函数&反向传播

损失函数:在深度学习模型中,损失函数(Loss Function)是一种衡量模型预测与真实值之间差距的函数。换句话说,它是模型的性能指标。在训练过程中,我们的目标就是找到一组参数,它们可以最小化损失函数。常见的损失函数有均方误差(MSE, Mean Squared Error),交叉熵(Cross Entropy)等。我之前学的人工智能原理中的方差代价函数也属于这里的损失函数。

2024-05-01 17:26:11 1310

原创 【神经网络】07 - Sequential小实战

在 PyTorch 中,Sequential是一个容器(container)类,用于构建神经网络模型。它允许你按顺序(sequential)添加不同的网络层,并将它们串联在一起,形成一个网络模型。这样做可以方便地定义简单的前向传播过程,适用于许多基本的网络结构。Sequential的优点之一是其简洁性和易读性,特别适用于简单的网络结构。然而,对于更复杂的模型,可能需要使用 PyTorch 的其他模型构建方式,如使用nn.Module基类自定义网络结构,以满足更灵活的需求。

2024-04-30 11:15:05 516

原创 【神经网络】06 - PyTorch自带的网络模型

许多框架会把VGG16当作前置框架,使用VGG16提取特征,在VGG16后面加一些网络结构实现功能。

2024-04-29 13:05:29 621

原创 【神经网络】05 - 全连接层

nn.Linear在PyTorch中是用于创建全连接层(全连接神经网络层)的类。全连接层也被称为密集连接层或者全连接神经网络层,是深度学习中常用的一种网络层类型。全连接层的作用是将上一层的所有节点都连接到当前层的每个节点,这样每个节点都与上一层的所有节点相连,形成了完全连接的网络结构。这种结构可以学习到输入数据之间的复杂非线性关系,从而提高模型的表达能力。在PyTorch中,使用nn.Linear可以方便地创建全连接层,指定输入特征的维度和输出特征的维度。

2024-04-27 16:06:17 468

原创 【神经网络】04 - 非线性激活

在PyTorch中,非线性激活函数是用于神经网络中的一种函数,它们的作用是在神经网络的各层之间引入非线性特性,从而增强模型的表达能力。常见的非线性激活函数包括ReLU(Rectified Linear Unit)、Sigmoid、Tanh等。

2024-04-27 16:05:17 358

原创 【神经网络】03 - (最大)池化层

池化层是一种用于减少特征图(feature map)大小的层级。它通过对输入的特征图进行某种形式的聚合操作,例如最大池化或平均池化,从而降低了特征图的空间维度,减少了参数数量和计算负担。总的来说,池化层在卷积神经网络中起到了对特征进行降维和抽象表示的作用,有助于网络有效地学习和提取输入数据中的关键信息。

2024-04-26 08:45:12 491

原创 【神经网络】02 - 卷积层

卷积层是深度学习神经网络中的一种基本层,用于提取输入数据中的特征。它通过卷积操作对输入数据进行处理,并输出具有更高级别表示的特征图(feature map)。卷积层在图像处理、自然语言处理等领域中都有广泛的应用。卷积分为不同维度,有Conv1d,Conv2d和Conv3d,我们主要学习二维卷积。卷积层通常与其他层结合使用,如激活函数层(如ReLU)、池化层(如最大池化、平均池化)和全连接层,构成深度神经网络的基本架构。

2024-04-25 07:19:10 606

原创 【神经网络】01 - 基本骨架nn.Module

在 PyTorch 中,nn.Module 是一个用于构建神经网络模型的基类。方法用于初始化模型,但这个方法目前为空,因为在这个简单的例子中,我们并没有添加具体的层或参数。在这个方法中,我们对输入进行加一操作,并将结果作为输出返回。,这里的输出结果将是2.0,因为我们将输入1.0加一了,得到了2.0。类,这是PyTorch中定义神经网络模型的基类。接着,我们创建了一个值为1.0的PyTorch张量。首先,我们导入了PyTorch库,并引入了其中的。类中,我们定义了一个。然后,定义了一个名为。

2024-04-24 16:14:25 429

原创 【数据的读取和处理】04 - torchvision中的数据集使用

注意download=True可以自动下载数据集。接下来联动transforms和Tensorboard。

2024-04-23 07:40:56 247

原创 【数据的读取和处理】03 - Transforms

是PyTorch中的一个模块,是一个工具箱,用于进行图像处理和数据增强的操作。它提供了一系列的转换函数,可以方便地对图像进行预处理、增强或者转换,以满足模型训练或推理的需求。这些转换可以通过组合使用来构建一个数据预处理流水线,用于准备训练集或测试集中的图像数据。通过这些转换,可以提高模型的泛化能力、抗扰动能力,并且可以在训练过程中对数据进行增广,以防止过拟合。

2024-04-22 13:19:40 610

原创 【数据的读取和处理】02 - TensorBoard

TensorBoard是TensorFlow深度学习框架提供的一个可视化工具,用于可视化训练过程中的模型结构、训练曲线、图像、直方图以及其他与模型训练相关的数据。它是一个非常强大的工具,能够帮助深度学习工程师和研究人员更好地理解模型的训练过程,优化模型性能,诊断问题等。虽然TensorBoard最初是为TensorFlow设计的,但是PyTorch用户也可以使用TensorBoard来可视化他们的模型和训练过程。

2024-04-22 13:09:28 465

原创 【数据的读取和处理】01 - Dataset和DataLoader

在PyTorch中,Dataset和DataLoader是两个关键的类,用于处理数据加载和预处理,特别是在训练神经网络时。

2024-04-22 07:26:29 1280

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除