自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 3.30学习日志

e.g.梯度过大---学习率变化大,原参数-梯度乘学习率后,新的参数值会波动较大----如果参数更新过程中连续几次都以过大的步长更新,参数值可能会变得异常大,导致数值上的不稳定。将每层的输出和梯度都看做随机变量,并且他们的均值和方差都保持一致,这样无论层数深度,数值都会在一定的范围内。式子1:已知输入h t-1的均值已经是0,输出的导数均值就是0,α*0=0,因此β=0。对于底部尤为严重:梯度是反传的,顶部的梯度还会是正常,多层累乘过后,梯度就趋近于零。假设要求输入的方差和输出的方差一致,就可以得到。

2024-04-01 21:17:53 780

原创 3.27学习日志

总结:Dropout将一些输出项随机置0来控制模型复杂度,通常用在多层感知机的隐藏层输出上,丢弃概率是控制模型复杂度的超参数。丢弃法是在层之间加入噪音,使用有噪音的数据等价于(Tikhonov正则)正则是让权重不要太大,避免出现过拟合。1.创建激活函数:激活函数在神经网络中扮演着至关重要的角色,它们在每个神经元的输出上应用非线性转换。dropout作用在隐藏层的输出上,结果可能是有一些值丢失,有一些值变大。丢弃法是在训练的时候吧神经元丢弃后训练,在预测是神经元没有丢弃。每一次的运行结果都是不一样的。

2024-03-30 14:33:31 253

原创 1.9学习日志

在原本的损失函数后面添加的项叫做阀,如果没有阀原本绿色的圈就是损失函数l的等高线,中心店w的位置是最优解,如果加上阀,此时的阀值就会很大,必然就不再是最优解,因此最优解会向原点的方向靠近,w的值就会减小,也就限制住了参数w的选择范围。相比原来展开时间t更新参数函数后,增加的项就是ηλ,因此在每一次更新参数之前,都会给原来的参数先乘一个小于1的数将其缩小。对于每个层,需要计算两个梯度:对于输出的梯度和对于权重的梯度。反向传播是计算梯度的过程,它从损失函数开始,通过链式法则逐层计算每个参数的梯度。

2024-03-27 11:16:52 217

原创 1.8学习日志

补充前面:1.神经网络一层的含义:是包括权重偏差计算以及σ计算的过程2.神经网络增加隐藏层的个数原因:本质上一层较多的隐藏单元,和多层较少的隐藏单元模型capacity是一样的,但是增加隐藏层,每一层学习较少的特征模型会更好训练,也就是深度学习。如果是一层较多的隐藏单元会不好训练,容易出现过拟合的情况。

2024-01-09 11:14:22 712

原创 1.4学习日志

h是隐藏层对于输入层作为输出,o是输出层对于隐藏层作为输出,如果缺少非线性的激活函数σ,可以得到以下等价替换,最后输入层和输出层的结果仍是线性关系,失去了多层感知机的作用。对于较大的数据集,通常可以使用更大的隐藏层,因为模型有更多的信息来学习。理解下来:原本一只狗一只猫的分类权重是红线,又来一只狗之后,需要对权重进行更新,然后下移成黑线,保证分类的正确性,再次增加样本同理。如果y[<w,x>+b]<=0,表示分类错误,因此需要对w,b进行更新直到当前的w,b保证所有样本分类正确,才停止对参数的更新。

2024-01-07 18:37:03 326

原创 12.26学习日志

在优化器优化中,用l*len(y)得到是损失值的原因是,y包含了批次样本中所用标签是一个张量,而len(y)是y的第一个维度值,也就是样本数量,所以将得到的单个样本损失值乘样本数即为总损失值。绿色的似然函数代表y’在哪取值,这个y’对应的参数概率是最大的。当预测值和真实值相差较大,梯度较大,参数的更新值是比较多的,当靠近真实值,梯度会变小,参数更新幅度也就变小。当预测值和真实值相差较多的时候,用绝对误差,当靠近的时候梯度绝对值会越来越小,用平方误差,综合以上两种误差的优点,减1/2是为了连续性。

2024-01-04 20:15:41 1364

原创 12.25学习日志

1.内部的 for 循环用于遍历训练数据集的小批量样本,并计算每个小批量样本的损失(偏差)。由于每一次计算梯度都需要对整个数据集处理,花费时间较长,因此可以随机采样b个样本来近似损失,b是批量大小。定义一个函数用来接收批量大小,特征矩阵和标签向量作为输入,生成大小为batch_size的批量。是用于在每个训练轮次结束后,计算整个训练集上的平均损失,并将其输出到控制台。梯度是使函数值增加最快的方向,负梯度就是使函数值下降最快的方向。等高线图w0的位置是函数值最大的地方,越向内函数值越小。

2023-12-26 21:46:54 341

原创 12.5学习日志

如果后续计算中没有重复使用x,也可以使用x[:]=x+y或者x+= y来减少操作的内存开销,此时地址也不会发生改变。对于inputs中的类别值或者离散值(Pave或NaN),将“NAN”视为一个类别,通过0,1表示有或没有。7.可以用[-1] 访问最后一列元素,可以用[1:3]选择第二行和第三行元素。2维数组是一个样本的特征矩阵,每一行表示一个样本,每一列表示不同特征。2.可以通过reshape改变张量的形状,但不改变元素数量和元素值。1.可以通过张量的shape属性来访问张量的形状和张量中的元素。

2023-12-21 20:33:49 1199

原创 11.30,12.1学习日志

dog图片,最终返回的类别是飞机类别,原因是这里用的模型是tudui_0.pth,是没有进行过优化的模型,模型准确度较低。(十五)完整的模型验证套路。

2023-12-05 14:03:10 325

原创 11.27学习日志

(十四)完整的模型训练套路(以CIFAR10数据集为例)测试分类预测类别正确率。

2023-12-01 16:47:23 296 1

原创 11.26学习

学习速率一般一开始选择较大的学习,后面较小,不能太大因为要保证模型的稳定性,不能太小,因为要保证学习的时间。最终loss是先下降后上升,原因可能是因为学习率过大,出现nan是因为梯度爆炸。1.实际值与目标值的差,对于神经网络来说,就是依据损失函数进行训练来减小误差。CrossEntropyLoss():训练一个分类问题有多个类别。必须设置参数:params--模型参数 lr---学习速率。较为简单的两种损失函数:L1Loss和MSELoss。2.为我们更新输出提供一定依据(反向传播)

2023-11-27 23:24:44 357

原创 11.22,11.23学习日志

在二分类问题中,通常将输出大于 0.5 的样本判定为正类别,小于 0.5 的样本判定为负类别。例如,在图像分类中,当模型需要判断图像是猫还是狗时,输出层通常使用 Sigmoid 函数,模型的输出可以理解为图像属于猫类别的概率。这有助于神经网络的稀疏激活性,使得只有激活的神经元参与信息传递,从而提高网络的表达能力。这是一个整数或元组,指定在输入的高度和宽度的两侧添加零值的数量。窗口中元素之间的间距。最大池化是取池化部分的最大值,目的是为了保证数据的情况下减小数据量,例子是1080p的视频和720p的视频。

2023-11-27 13:58:48 1569

原创 11.19学习日志

同样,2D张量也是一个二维数组,其中的元素可以用两个坐标来索引,通常表示为。原因是在调用writer.add_images时会在内部调用make_grid函数,用来将多个图像组合成网格,便于可视化,而在使用。如果卷积核较大,输出的尺寸可能较小,因为每个卷积操作都会减小输出的尺寸。卷积操作的结果是通过在输入上滑动卷积核并计算对应元素乘积的和来得到的。较大的步幅会导致输出的尺寸减小,因为卷积核之间的重叠较少。函数时,通常通道数应为 3,这里的output通道数为6,因此会出现报错。函数进行二维卷积操作。

2023-11-22 15:29:54 14

原创 11.18学习

从dataset中去取数据,设置dataloader的参数决定从dataset取的方式。输入经过神经网络中的forward()函数处理,给一个输出。

2023-11-19 22:13:58 19

原创 11.16学习

其中,input[channel]input[channel] 是输入图像的某一通道的像素值,mean[channel]mean[channel] 是该通道的均值,std[channel]std[channel] 是该通道的标准差。1>使用 PIL.Image 读取的图像是一种 PIL 类,mode=RGB,要想获得图像的像素值还需要将其转为 np.array 格式。时,确保前一个操作的输出和后一个操作的输入匹配,否则可能会导致错误(即列表中的两个参数颠倒)。因为随机裁剪的尺寸超过了原始图像的尺寸。

2023-11-18 12:27:50 48 1

原创 11.15学习

transform使用主要是图像变换,但要演示transform的结果,每一次变换,展示一次图片,更方便的就是Tensorboard。会出现报错原因是,图像shape格式不对(从PIL到numpy,需要在add_image()中指定shape每一个数字表示的含义。可以重新写一个子文件,创建新的SummaryWriter("新文件夹"),也可以在原先的文件夹中将所有事件文件都删掉。label文件夹中是每个图片对应的以图片名命名的txt文档里存的是该图片的label。将数据集复制到python工程的文件夹里。

2023-11-16 21:42:05 20 1

原创 11.14学习

2>Python控制台:以每一行为块运行的,修改后是紧接着再运行后面的部分,覆盖前面的,相比较与python文件,可阅读性降低(一般作为调试阶段)1>Python文件:代码以块为一个整体运行,python文件的块是所有行的代码,中间一处语句出现问题,修改后会从头开始运行。在anaconda prompt输入:conda activate pytorch。help():让我们知道每个工具如何使用的,工具的使用方法。dir():打开工具箱,以及工具箱分隔里的具体的东西。3>jupyter:以任意行为块运行的。

2023-11-15 10:34:33 18 1

原创 11.12 学习

has-a关系,使用组合,一个类拥有另一个类的方法和属性e.g.Mobilephone has a CPU。is-a 关系,使用“继承”,实现子类拥有父类的方法和属性e.g.dog is animal。使用专门的工厂类将选择实现类、创建对象进行统一的管理和控制。组合后可以复用对象的属性和方法,核心是将对象作为属性。

2023-11-13 10:28:29 12

原创 11.9学习日志

1.一个子类可以继承多个父类,类定义中没有指定父类,则默认父类是object类,object是所有类的父类,顶一个一些所有类共有的默认实现。封装:隐藏对象的属性和实现细节,只对外提供必要的方法,通过“私有属性,私有方法”的方式,实现封装。如果父类中有相同名字的方法,在子类没有指定父类名字时,解释器“从左向右”按顺序搜索。子类不重写_init_,实例化子类,调用父类的_init_,重写则不会调用。如果子类没有一个方法,就先查看父类1的,父类1有就调用,没有再查父类2。多态是方法的多态,属性没有多态。

2023-11-12 22:43:25 13

原创 11.8 学习日志

面向对象:“设计者思维”,首先思考怎么设计,将复杂事物分解,需要很多协作完成,具体到实现部分的微观操作,仍然需要面向过程去处理。静态方法在模块中定义普通函数没有区别,只是“静态方法”放到了“类的名字空间里”,需要通过“类调用”4.__init__()方法:初始化创建好的对象,初始化指的是:“给实例属性赋值”如果在创建的某个实例对象下新增属性,则该属性只在该实例对象内,其他实例对象无法调用。类属性是从属于“类对象”的属性,也称为“类变量”,可以被所有实例对象共享。self指的是刚刚创建好的实例对象。

2023-11-12 16:54:22 16

原创 11.7 学习日志

函数时刻可重复用的程序代码块,更能实现代码一致性内置函数:直接使用标准库函数:用import调用第三方库函数:下载安装后,用import导入用户自定义函数def 函数名(参数列表):#函数说明函数体'''完成三个数的加法,并返回它们的和'''print("{0}、{1}、{2}三个数的和是:{3}".format(a,b,c,sum))return sum函数的定义和调用:1.使用def来定义函数,创建一个函数对象,并绑定到函数名变量上。

2023-11-08 20:13:15 32 1

原创 11.6 学习日志

如果for,while循环没有被break'语句结束,则会执行else子句,否则不执行。通过zip()函数对多个序列进行并行迭代,zip()函数在最短序列“用完”时就会停止。用来结束整个循环,当有嵌套时,break只能跳出最近一层循环。尽量减少循环内部不必要的计算,内层循环的计算尽可能向外提。2.for循环结构,通常用于可迭代对象的遍历。列表进行元素插入和删除,尽量在列表尾部操作。计算1-100累加和,奇数和,偶数和。生成一个列表里面放元组,zip迭代。用于结束本次循环,继续下一次。

2023-11-07 18:23:59 16

原创 11.5 学习日志

2.a|b并集,a&b或者a.intersaction(b)交集,a-b或者a.difference(b)差集(a里面有b里没有),a.union(b)并集。条件表达式的值为False的情况:False、0、0.0、空值None、空序列对象(列表,元组,集合,字典,字符串)、空range对象、空迭代对象。字典是“键值对”的无序可变对象,字典中的每个元素都包含“键对象”和“值对象”,可以通过“键对象”实现快速获取删除更新对应的“值对象”。pop()删除指定的键值对,并返回对应的值对象;通过[键]获得值对象。

2023-11-06 19:52:16 27

原创 11.4 学习日志

使用生成器对象的_next_()方法进行遍历,在返回每一个值的同时,指针会移动到下一个值,当之后没有值时,会发生报错。4.zip将多个列表对应位置的元素组合成为元组,并返回这个zip对象,返回列表长度与最短的对象相同。2.元组的元素访问,index(),count(),切片等操作,和列表一样。tuple()可以接收列表,字符串,其他序列类型,迭代器等生成元组。list()可以接收元组,字符串,其他序列类型、迭代器等生成列表。,因此,元组没有添加元素,修改元素,删除元素等方法。通过tuple()创建元组。

2023-11-05 15:13:32 20 1

原创 11.3学习日志

index(value,[start,[end]]),start和end指定了搜索的范围。判断列表中是否存在指定的元素,用in和not in来判断,直接返回True或False。pop()删除并返回指定元素,如果未指定位置则默认操作列表最后一个元素。sum()对数值型列表进行求和,对非数值型列表会报错。max和min用于返回列表中的最大值和最小值。修改原列表,不建新列表的排序。删除元素底层是:元素的拷贝。出现的指定元素,若不存在则会报错。8.复制列表所有元素到新列表。6.列表切片slice操作。

2023-11-04 15:11:20 23 1

原创 11.2Python学习日志

11.字符串切片slice操作默认步长是1(正数)[:]提取整个字符串 print("abcdef"[:]) #结果为“abcdef”[start:]从start索引到结尾print(“abcdef”[2:]) #a是0,b是1,c是2,结果为“cdef”[:end]从头开始直到end-1[start:end]从start到end-1(包头不包尾)

2023-11-03 10:42:23 24

原创 11.1Python学习日志

Python中有一些特殊的布尔类型值为False,例如False、0、0.0、空值、空序列对象(空列表,空元祖,空集合,空字典,空字符串)、空range对象、空迭代对象。四种类型:整型int,浮点型float(可使用科学计数法314e-2),布尔型bool(表示真假只有True和Flase),字符串型str(“”或‘’引起都可)4.常量名:全大写,多个之间下划线 e.g.SPEED。除了用‘‘’’+“”以外,还可以将多个字面字符串直接放在一起实现拼接‘aa’‘bb’结果是‘aabb’

2023-11-02 09:10:48 31 2

原创 10.31

多行注释:'''或"""两处之间的内容(本质上就是一个字符串)单行注释:每行注释前#(快捷键Ctrl+?缩进风格统一:单个制表符或者四个空格。2.Python区分大小写。1.缩进表示层次关系。

2023-11-01 09:23:07 23

空空如也

空空如也

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

TA关注的人

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