- 博客(73)
- 收藏
- 关注
原创 DataWhale AI 夏令营 笔记1-baseline
调整方法:从一个较小的值开始(如10),逐步增加(如100、200等),观察模型性能的变化。一般来说,增加树的数量会提高模型的稳定性和准确性,但也会带来计算成本的增加。节点分裂:从随机选择的特征中选择最佳的分裂特征和分裂点,使得每个节点尽可能纯净。叶节点的预测值通常是该节点中所有样本的均值(回归任务)或类别的多数投票(分类任务)。调整方法:可以从一个较小的值开始(如5),逐步增加,观察模型的表现。调整方法:n_jobs=-1 会使用所有可用的CPU核心,这通常是最好的选择,因为可以最大化计算速度。
2024-07-26 20:14:46
445
原创 矩阵乘法@与dot
scores = X @ W 和 scores = np.dot(X, W) 是等价的,两者都用于矩阵乘法运算,但在语法和某些情况下的行为上略有不同。np.dot 是NumPy中用于点积运算的函数。在处理二维数组时,它等同于矩阵乘法。np.dot 还可以用于一维数组的内积运算和高维数组的广义点积运算。
2024-07-24 19:40:03
245
原创 向量化操作
向量化操作是指利用数组操作而不是显式的循环来进行计算,这样可以充分利用底层优化和并行处理,从而提高计算效率。假设 i = 0 时,测试样本是 X[0] = [1, 2]。
2024-07-23 13:02:57
217
原创 多类支持向量机损失(SVM损失)
超参数是指在机器学习算法的训练过程中需要设置的参数,它们不同于模型本身的参数(例如权重和偏置),是需要在训练之前预先确定的。超参数在模型训练和性能优化中起着关键作用。SVM 损失的设置是,SVM“希望”每个图像的正确类别的得分比错误类别高出一定幅度Δ。即假设有一个分数集合s=[13,−7,11]如果y0为真实值,超参数为10,则该损失值为。
2024-07-17 17:44:49
295
原创 图像分类-数据驱动方法
如图所示,K越大的边界会更加平滑,本质上是根据某一样本最近的K个邻居来投票该区域的类型,可以看到,K取1时会受噪声的影响在绿色中间出现了一块黄色的区域。KNN算法通过比较新样本与训练集中的样本的距离,然后根据最近的K个邻居的投票结果来决定新样本的分类。K近邻算法(K-Nearest Neighbors,简称KNN)
2024-07-06 11:12:59
142
1
原创 神经网络学习10-逻辑斯蒂回归
这个是交叉熵,主要用于衡量两个概率分布之间的差异。在机器学习中,特别是在分类问题中,交叉熵作为损失函数,用于评估模型的预测与真实标签之间的差异。交叉熵损失函数的目的是最小化模型预测分布与真实分布之间的差异,从而提高模型的预测准确性。KL散度(Kullback-Leibler Divergence,也称为相对熵)是用来衡量两个概率分布之间差异的一种方法。由于我们y^的输出是一个概率,要保证其输出的值属于[0,1]而我们输出的不再是数值,而是分布,比较的是两个分布之间的差异。此时,y^=P(class=1)
2024-06-29 14:30:27
305
原创 神经网络学习笔记9-简单的反向传播和线性回归
loss是一个张量,在做运算时构建运算图,因此不要直接进行,会将将梯度存入w,当反向传播完成 后,该计算图会被释放。假如需要计算梯度,就将tensor中 requires_grad设为true。这里注意一下grad即梯度也是一个tensor类型,要取到data才能做运算。tensor在pytorch中是一个非常重要的类型。线性回归就是一个最简单的只有一个神经元的神经网络。
2024-06-27 20:18:15
203
原创 神经网络学习8-反向传播
这里的loss=(wx+b-y)^2,第一个关于b的偏导为2(wx+b-y),第二个关于w的为2w(wx+b-y)拿到前面传回来的L对z的偏导,再分别算损失值对x和w的偏导。
2024-06-26 19:47:01
239
1
原创 神经网路学习7-线性模型
上面的是针对单个样本的,后面的是对整个train_set的,后面的那个就是MSE(均方误差)一个最简单的线性模型,w是权重,一般来说会取随机值,然后不断学习直到与预期相同。如此以此取每个值与真实值的差值,即评估误差。即找一个合适的权重w,使得平均误差最小。穷举法找出最小的loss区间。
2024-06-25 18:37:43
226
原创 神经网络实战2-损失函数和反向传播
loss函数是找最小值的,要求导,在计算机里面计算导数是倒着来的,所以叫反向传播。loss的默认reduction是mean即平均值。其实就是通过求偏导的方式,求出各个权重大小。对以上的一个简单设计。
2024-06-24 17:06:38
343
原创 神经网络实战1-Sequential
区别主要体现在dilation参数大于1时,即空洞卷积(dilated convolution)的情况下,此时卷积核内的元素之间会有间隔,从而扩大了卷积核的感受野。在一些情况下,为了方便地计算卷积核的填充(padding),可以利用奇数卷积核的特点直接使用 kernel_size // 2 这样的计算来确定卷积核中心相对于卷积核边缘的偏移量。此外,奇数大小的卷积核也有助于确保输出的特征图中的像素位置是对称分布的。当卷积核的大小是奇数时,意味着卷积核的中心位置是准确地位于核的中心的一个单元的位置上。
2024-06-23 16:28:09
522
原创 神经网络学习6-线性层
作用:正则化是一种用来防止过拟合的技术,通过向模型的损失函数中添加惩罚项,使得模型在学习过程中更加平滑,避免对训练数据过度拟合。作用:归一化是一种数据预处理技术,用来缩放特征值的范围,使得不同特征之间具有可比性,加速模型的收敛过程,提高模型的性能。它们也被称为全连接层或密集层。out_features: 这是输出特征的数量,即线性层生成的每个输出样本的大小。in_features: 这是输入特征的数量,即线性层接收的每个输入样本的大小。例题:将一个5*5的图片转变为25的,在转变为3的,特征提取。
2024-06-22 16:55:08
367
原创 神经网络学习5-非线性激活
具体来说,非线性激活函数将神经元的线性组合(即加权和加上偏置)转化为非线性输出。使得深度学习变得可能:深度神经网络中的层数很多,如果每一层都只是线性的叠加,那么无论多少层,最终的模型还是一个线性模型。引入非线性特性:没有非线性激活函数的神经网络只能表达线性关系,无论网络有多少层。通过引入非线性,神经网络可以处理复杂的非线性问题,从而能够逼近任何连续的函数。增加模型的表达能力:非线性激活函数使得多层网络具有更强的表达能力,可以拟合复杂的数据分布,解决复杂的任务,如图像识别、自然语言处理等。
2024-06-21 19:42:51
191
原创 神经网络学习-池化层
对于不同类型的数据,通道的含义可能会有所不同。在图像处理中,通常表示颜色通道,比如 RGB 图像有三个通道(红、绿、蓝),灰度图像只有一个通道。像素本来就低依然要池化,池化一般跟在卷积层后,卷积层是用来提取特征的,一般有相应特征的位置是比较大的数字,最大池化可以提出来这一部分有相应特征的信息。空洞卷积,通过在卷积核的元素之间插入“空洞”(即零),可以在不增加参数量和计算量的情况下扩大卷积核的感受野。对于卷积神经网络 (CNN) 来说,通道也可以理解为卷积核的数量,每个通道对输入数据进行不同的特征提取。
2024-06-20 18:06:38
305
原创 神经网络学习3-卷积层
膨胀卷积,也被称为空洞卷积或扩张卷积,是一种特殊的卷积运算,它在标准卷积的基础上引入了一个额外的超参数,即膨胀率(dilation rate)。这个超参数决定了在卷积核的元素之间插入多少额外的空间。通过这种方式,膨胀卷积能够在不增加计算复杂度的同时,扩大卷积运算的采样范围,从而增加感受野(receptive field)的大小。感受野指的是卷积神经网络中某一层输出结果中一个元素所对应的输入层的区域大小,它代表了卷积核在图像上看到的区域大小。感受野越大,包含的上下文关系越多,有利于捕捉更广泛的图像信息。
2024-06-19 15:41:59
501
原创 神经网络学习2
例如,一个卷积层可能有 32 个 3x3 的卷积核,输入是一个 RGB 图像(具有 3 个通道),输出将是 32 个特征图。其中,batch_size 表示每个批次的样本数量,channels 表示输入图像的通道数(对于灰度图像通道数为 1,对于彩色图像通道数为 3),height 和 width 表示图像的高度和宽度。卷积操作是将卷积核应用到输入数据的每个位置,通过滑动窗口的方式逐元素相乘并求和,生成一个新的输出值。特征提取:卷积核通过对局部区域的操作,可以提取不同层次的特征,例如边缘、纹理、颜色等。
2024-06-15 14:19:40
372
原创 神经网络学习1—nn.Module
这个x先经过一次卷积,再经过以此非线性,再经过一次卷积,再经过一次非线性,最后才能得出输出。relu(x)是分段函数0,x<0;1,x>=0,有点类似于深度学习中的感知机。nn.module 为所有神经网络提供了一个模板。卷积就是提取特征,上面的conv1和2就是卷积操作。alt+insert可以自动补全子类。forward即前向传播。
2024-06-14 19:56:20
212
原创 pytorch学习笔记7
这里将每个epoch的图片放在名为epoch{}的文件夹中,并使用step作为其次级目录,以便于在TensorBoard中查看不同批次的图片。用途:使用batch可以平衡训练速度和模型参数更新的稳定性。对于大型数据集,一次性使用全部数据进行参数更新可能会非常耗时且内存占用过高,而使用小的batch可以加速计算,同时还能使梯度估计更稳定。定义:batch(也称为mini-batch)是指在一次参数更新过程中所使用的训练样本的一个子集。每个batch会更新模型的参数一次,因此一个epoch会有多次参数更新。
2024-06-14 14:36:08
555
原创 pytorch学习笔记6
这通常有助于加速模型的训练过程并提高模型的性能。想要找一些官方的小工具数据集,可以进入pytorch官网,DOCS-》pytorch下拉至libraries,点击torchversion,调整版本至0.9.0就可以找到相应的一些数据集,训练集。防止梯度消失和梯度爆炸:标准化可以将输入数据的范围限制在一个较小的范围内,防止梯度在传播过程中变得过大或过小,稳定模型的训练过程。加速模型收敛:通过将输入数据标准化,可以使模型的梯度更加稳定,避免某些特征对模型训练造成过大的影响,从而加速模型的收敛速度。
2024-06-13 19:24:25
555
原创 pytorch学习笔记5
前向钩子(forward hook)在模块的前向传播开始时触发,前向后钩子(forward pre-hook)在前向传播之前触发,反向钩子(backward hook)在反向传播过程中触发。总结来说,钩子提供了一种在 PyTorch 模型的执行过程中插入自定义代码的方法,使得用户可以灵活地调试、监控和扩展模型的功能。作用: 这是一个内部的 C 语言指针,指向张量在底层库(通常是 C++ 实现的 PyTorch 核心)中的具体数据结构。这些钩子可以在张量的梯度计算之前或之后执行自定义的操作。
2024-06-02 18:21:33
1887
原创 pytorch学习笔记4
目的是将几个 transforms操作打包成一个,比如要先进行大小调整,然后进行归一化计算,返回tensor类型,则可以将 ToTensor、Normalize、Resize,按操作顺序输入到Compose中。在这个例子中,循环从0到99,对于每个i值,它会将两个值传递给add_scalar方法。这意味着在TensorBoard中,我们会有一个以步数i为x轴、以2i为y轴的数据点。tranforms对应 tranforms.py 文件,里面定义了很多类,输入一个图片对象,返回经过处理的图片对象。
2024-06-01 20:19:19
390
原创 pytorch学习笔记3
标量数据通常指的是单个数值,比如一个损失值、准确率、学习率等。这些单个的数值数据可以被记录下来,用于分析模型的训练过程、性能等。在代码中,writer.add_scalar() 的作用就是将这些标量数据添加到日志中,以便后续在可视化工具中进行展示和分析。scholar_value对应y轴。global_step对应x轴。会创建一个logs文件夹。
2024-05-31 20:23:23
347
原创 pytorch学习笔记2
安装pytorch的时候,主要是把官网指令后面的-c pytorch删掉,-c pytorch的意思是,安装下载的channel强制为pytorch官网的channel。所以需要删除才能走清华镜像的channel。写python可以使用这个python console,是ipython内核,可以交互式运行Python语句(jupyter也是这个内核)首先如果遇到conda找不到包,pip老是超时的情况建议添加一下镜像源。cuda最好还是像下面链接里的用10.0。pip的话用这个命令。下面部分进行实时调试。
2024-05-30 20:18:12
340
原创 pytorch学习1
2.训练图片和label(ocr数据集)(ocr就是字符识别,这个数据集是用来训练识别文字的)dataset是提供一种方式去获取数据及其lable。dataloader:为后面的网络提供不同的数据形式。数据集的组织形式:1.训练数据集和验证数据集。1.我们要获取每一个数据及其lable。3.lable直接写数据名字上。2.获取总共有多少数据。help():说明书。
2024-05-29 19:36:18
212
原创 pytorch安装遇到的一些问题
CUDA安装时建议11.6,因为我其他的新版本安装都出错了。在安装pytorch的时候遇到了很多问题。这个问题告诉你python版本不对。pytorch安装时如果遇到。这时候新建一个虚拟环境。
2024-05-27 19:08:08
2622
1
原创 pillow学习6
draw.textbbox 是 Pillow 库中用于计算文本边界框(bounding box)的方法。它返回一个包含文本的四个边界坐标的元组 (left, top, right, bottom)。这个方法可以帮助你确定文本的精确宽度和高度,从而在图像上正确定位文本。align:对齐方式(如 “left”, “center”, “right”)。direction:文本方向(如 “ltr”, “rtl”)。xy:一个 (x, y) 元组,指定文本起始点的位置。text:要绘制的文本字符串。
2024-05-25 19:05:08
169
原创 pillow学习5
在左上角坐标为(x1,y1),右下角坐标为(x2,y2)的矩形区域内,满圆 O 内,以 start 为起始角度,以 end 为终止角度,截取圆 O 的一部分圆弧并画出来。[x1,y1,x2,y2]也可以写为(x1,y1,x2,y2)、[(x1,y1),(x2,y2)]等;方法 enhance()会返回一个增强的 Image 对象,参数 factor 是一个大于 0 的浮点数,1 表。fill 表示文本的颜色;:功能是调整图像色彩平衡,相当于彩色电视机的色彩调整,实现了上边提到的接口的enhance 方法。
2024-05-23 17:57:53
1002
原创 pillow学习4
与变暗函数 darker()相反,功能是比较两个图片(逐像素比较,返回一幅新的图片,这幅新的图片是将两张图片中较亮的部分叠加得到的。两幅图像的对应像素值相减后的图像,对应像素值相同的,则为黑色。在反色时将用 255 减去一幅图像的每个像素值,从而得到原来图像的反相。功能是通过计算通道中像素值的方式来实现的。,类似于集合操作中的求补集,最大值为 Max,每个像素做减法,取。,功能是先反色后叠加,实现合成图像的效果,就像将两张幻灯片用。功能是比较两个图片的像素,取两张图片中对应像素的较小值,所。
2024-05-22 19:03:35
446
原创 pillow学习3
CMYK:CMYK模式表示图像是使用青色(Cyan)、品红(Magenta)、黄色(Yellow)、黑色(Key/Keyline)四种油墨颜色的印刷图像,主要用于打印。RGB:RGB模式表示图像是真彩色图像,每个像素由红(R)、绿(G)、蓝(B)三种颜色通道组成,每个通道占据8位,共24位表示一个像素的颜色。L(灰度图):L模式表示图像是灰度图像,每个像素用8位表示(范围为0-255),0表示黑色,255表示白色。作用:模式滤波器会用滤波窗口内的众数(出现次数最多的值)替换中心像素值,用于减少随机噪声。
2024-05-21 18:33:41
1121
原创 pillow学习2
在 Pillow 库中的 Image 模块中,使用函数 filter()可以对指定的图片使用滤镜效果,在Pillow 库中可以用的滤镜保存在 ImageFilter 模块中。在 Pillow 库的 Image 模块中,可以使用函数 eval()实现像素缩放处理,能够使用函数 fun()计算输入图片的每个像素并返回。在 Pillow 库的 Image 模块中,函数 rotate()的功能返回此图像的副本,围绕其中心逆时针旋转给定的度数。例如,在图像合成中,遮罩可以决定前景图像的哪些部分应该显示在背景图像上。
2024-05-19 17:59:17
531
原创 pillow学习
也就是 1 个像素包含 3 个字节的信息:(R,G,B)。那么,理论上我们只要操作每个点上的这三个数字,就能实现任何的图形。一幅图像上的所有像素点的信息就完全。在使用pillow库之前先注意一下,自己的pillow包在哪,比如我一直跑不出来,后来才发现自己的pillow库在anaconda下面。在 Pillow 库的 Image 模块中,可以使用函数 blend()实现透明度混合处理。数字图像可以看成一个整数阵列,阵列中的元素称为像素(Pixel)可以采用矩阵来表示,通过矩阵的运算实现更加复杂的操作。
2024-05-18 19:14:19
372
原创 巩固学习11
在Python中,以双下划线开头的属性或方法默认是私有的,意味着它们只能在定义它们的类内部访问,而不能在类的外部或子类中直接访问。上面报错的意思就是,默认以gbk的方式读取数据,但是文本数据是utf-8类型的,这是需要用到另一个参数encoding,也就是把它编码成与文本一样类型的格式,下面的代码encoding="utf-8"就是要修改的地方,如果不写编码格式,默认是encoding="gbk"的,在读入是后面加上encoding=‘utf8’就可以了。一开始在读入时提示报错。
2024-05-17 19:17:32
214
原创 巩固学习10
本来考虑读出后用splite进行统计,但是考虑到不确定单词直接以什么为间隔,因此采用正则表达式可以更精确的匹配到字符串,注意我查到有人认为可以用\b+\b,这是不正确的,因为\b+\b 这样的表达式在正则表达式语法上是无效的,因为在单词边界上不需要使用重复匹配符号 +。如果您想要匹配一个或多个连续的单词边界,可以使用 \b+ 或 \b{2,} 这样的表达式,只会匹配出空格。你有一个目录,放了你一个月的日记,都是 txt,为了避免分词的问题,假设内容都是英文,请统计出你认为每篇日记最重要的词。
2024-05-16 19:07:34
210
原创 巩固学习8
在 Pandas 中,sep参数用于指定数据中字段之间的分隔符。这些是一些常见的sep参数值,具体取决于数据文件中字段之间的实际分隔符。,有些文件使用分号来分隔字段。正则表达式:使用正则表达式作为分隔符。空格:’ ',用于空格分隔的数据。了解每一列的名称,确定要处理的数据。根据题目将需要处理的数据分别找出来。制表符:\t,常用于TSV文件。逗号:,,常用于CSV文件。pandas数据处理的过程。
2024-05-15 12:57:27
252
原创 巩固学习7
就是用来找到符合模式的字符串,这些模式包括:是什么字符,重复多少次,在什么位置,有哪些额外的约束。2.各个部分的字符分类分别是什么。1.确认模式包含几个子模式。两种模式之间加或(|)4.是否有外部位置限制。3.各个部分如何重复。
2024-05-13 20:05:03
260
原创 巩固学习6
又称规则表达式,Regular Expression,在代码中常简写为regex、regexp或RE),是一种文本模式,包括普通字符(例如,a到z之间的字母)和特殊字符(称为“元字符”),是计算机科学中的一个概念。正则表达式是对字符串(包括普通字符(例如,a到z之间的字母)和特殊字符(称为“元字符”))操作的一种逻辑公式,就是用事先定义好的一些特定字符以及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。pattern - 这是要匹配的正则表达式。
2024-05-12 19:51:02
289
原创 巩固学习5
与 sorted() 函数不同,sort() 方法会直接修改原始列表,而 sorted() 函数则返回一个新的已排序列表。key=lambda x: x[1]: 这部分是一个关键参数,用来指定排序的关键。lambda x: x[1] 定义了一个匿名函数,它表示对列表中的每个元素 x,使用其索引为 1 的值来进行排序。因此,ls.sort(key=lambda x: x[1], reverse=True) 的含义是:对列表 ls 按照每个元素的第二个值(索引为1的值)进行降序排序。10进制转为16进制小写。
2024-05-11 20:17:16
176
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人