深度学习
文章平均质量分 50
Lins H
这个作者很懒,什么都没留下…
展开
-
Gated-SCNN: Gated Shape CNNs for Semantic Segmentation
Gated-SCNN原创 2022-10-16 22:24:22 · 1883 阅读 · 4 评论 -
Sobel求图像梯度(从0实现以及cv2实现)
tensor的像素值特别接近,我们可以简单的设定一个阈值,将无用像素设置为0,并将其他像素归一化到0-255区间,就可以得到近似的结果。二者图像显示不同的原因是因为cv2提取的是灰度图像 numpy像素值在0-255之间,而tensor不同。图像梯度可以把图像看成二维离散函数,图像梯度其实就是这个二维离散函数的求导。图像梯度: G(x,y) = dx(i,j) + dy(i,j);其中,I是图像像素的值(如:RGB值),(i,j)为像素的坐标。图像就是函数,梯度对应的数值就是像素值的突变情况。原创 2022-10-15 16:54:07 · 1377 阅读 · 0 评论 -
pandas中常用函数
1 pandas.Series1.pd.Series(相当于一维数组)#pd.Series(data,index,dtype,name,copy)#data:数据,index:索引,name:可修改该Serise名字,copy:拷贝数据,默认是falseimport pandas as pdimport torcha=[10,20,30,40,50]A=pd.Series(data=a,index=[1,2,3,4,5],dtype=float,name='Money')#如果没有指定in原创 2021-12-24 15:52:02 · 2523 阅读 · 0 评论 -
ResNet18识别FashionMNIST数据集
1导入常用的包import timeimport torchimport torchvision.transforms as transformsimport torch.nn as nnimport torchvisionimport torch.nn.functional as F2导入并处理数据device =torch.device('cuda')data_tansform={ 'train': transforms.Compose([原创 2021-12-16 16:56:52 · 814 阅读 · 0 评论 -
池化详解+代码实现
1、什么是池化?我们之所以使用卷积后的特征,是因为图像具有“静态型”的属性,也就意味着在一个图像区域的特征极有可能在另一个区域同样适用。所以,当我们描述一个大的图像的时候就可以对不同位置的特征进行聚合统计(例如:可以计算图像一个区域上的某个特定特征的平均值 or 最大值)这种统计方式不仅可以降低纬度,还不容易过拟合。这种聚合统计的操作就称之为池化,或平均池化、最大池化。2、池化的作用?(1)保留主要特征的同时减少参数(降低纬度,类似PCA)和计算量,防止过拟合在通过卷积获得了特征 (features原创 2021-11-26 14:04:20 · 1828 阅读 · 0 评论 -
LeNet识别MNIST数据集
文章目录1.什么是LeNet模型2.导入数据包3.加载图片,并显示第一张图片的尺寸4.显示前十张数字5.构造LeNet网络6.精确函数总结1.什么是LeNet模型LeNet分为卷积层块和全连接层块两个部分。下面我们分别介绍这两个模块。卷积层块里的基本单位是卷积层后接最大池化层:卷积层用来识别图像里的空间模式,如线条和物体局部,之后的最大池化层则用来降低卷积层对位置的敏感性。卷积层块由两个这样的基本单位重复堆叠构成。在卷积层块中,每个卷积层都使用5×55×5的窗口,并在输出上使用sigmoid激活函数原创 2021-11-23 19:33:22 · 1791 阅读 · 0 评论 -
二维卷积的动手实现
#学自深度学习5.1章在二维互相关运算中,卷积窗口从输入数组的最左上方开始,按从左往右、从上往下的顺序,依次在输入数组上滑动。当卷积窗口滑动到某一位置时,窗口中的输入子数组与核数组按元素相乘并求和,得到输出数组中相应位置的元素。图5.1中的输出数组高和宽分别为2,其中的4个元素由二维互相关运算得出:0×0+1×1+3×2+4×3=19,1×0+2×1+4×2+5×3=25,3×0+4×1+6×2+7×3=37,4×0+5×1+7×2+8×3=43.import torchdef corr2d原创 2021-11-20 14:56:29 · 3420 阅读 · 0 评论 -
卷积和相关
转自动手学深度学习5.1章图5.1实际上,卷积运算与互相关运算类似。为了得到卷积运算的输出,我们只需将核数组左右翻转并上下翻转,再与输入数组做互相关运算。可见,卷积运算和互相关运算虽然类似,但如果它们使用相同的核数组,对于同一个输入,输出往往并不相同。那么,你也许会好奇卷积层为何能使用互相关运算替代卷积运算。其实,在深度学习中核数组都是学出来的:卷积层无论使用互相关运算或卷积运算都不影响模型预测时的输出。为了解释这一点,假设卷积层使用互相关运算学出图5.1中的核数组。设其他条件不变,使用卷积运算学出原创 2021-11-18 20:35:23 · 2492 阅读 · 0 评论 -
权值衰减—高维线性回归举例
1.为什么要权值衰减首先我们了解一下过拟合和欠拟合过拟合——是指学习时选择的模型所包含的参数过多,以至于出现这一模型对已知数据预测的很好,但对未知数据预测得很差的现象。这种情况下模型可能只是记住了训练集数据,而不是学习到了数据特征。欠拟合——模型描述能力太弱,以至于不能很好地学习到数据中的规律。产生欠拟合的原因通常是模型过于简单。2.应对过拟合最优方案——获取更多的训练数据次优方案——调节模型允许存储的信息量或者对模型允许存储的信息加以约束,该类方法也称为正则化。—调节模型大小—约束原创 2021-11-13 10:24:05 · 919 阅读 · 0 评论 -
多项式函数拟合
import torchimport matplotlib.pyplot as pltimport numpy as np#生成一个人工数据集def create(w,b,sample): x = torch.normal(0,1,size=(sample,len(w))) y = w[0]*x + w[1]*(x**2) +w[2] * (x**3) + b y += torch.normal(0,0.01,y.shape) return x,yt_w...原创 2021-11-12 16:58:30 · 1746 阅读 · 0 评论 -
多层感知机识别FashionMNIST数据集
文章目录一、什么是感知机?二、多层感知机1.引入库和FashionMNIST数据集2.设置参数,隐藏层单元设置为2563激活函数,损失函数,梯度下降,精确度,softmax函数4训练效果一、什么是感知机?在处理线性可分的二分类问题中 感知机随处可见,比如超过1.5m儿童购票,或者男生女生,都可以找到一个标准来准确的分类,在二维平面中,感知机就是一条一次函数,把平面中的样本分成2个类别。对于线性不可分的多分类问题,比我们可以用softmax或者多层感知机来判断属于每个类别的得分二、多层感知机多层感知原创 2021-11-12 15:08:46 · 1405 阅读 · 0 评论 -
pytorch中的掩膜mask
1结果维度不变y_hat=torch.tensor([[1,2,3],[4,5,6]])y=torch.tensor([1,0,0],dtype=torch.bool)print(y_hat[:,y])#tensor([[1],[4]]) y_hat[:,y].shape ([2,1])2 结果维度改变y_hat=torch.tensor([[1,2,3],[4,5,6]])y=torch.tensor([1,0,0],dtype=torch.bool)print(y_hat[ra原创 2021-11-11 19:44:28 · 1961 阅读 · 0 评论 -
线性回归代码从零开始详解
#创建数据集import torchimport matplotlib.pyplot as pltdef create(w,b,sample): x=torch.normal(0,1,size=(sample,len(w))) #以方差为0,标准差为1的分布,随机生成行为sample,列为len(w)的矩阵 y=x[:,0]*w[0]+x[:,1]*w[1]+b #生成y y+=torch.normal(0,0.01,y.shape) # 加噪声 return x,y.原创 2021-11-08 13:36:04 · 611 阅读 · 0 评论 -
zip()函数的用法
#转载自https://www.cnblogs.com/jin-liang/p/9987661.htmlpython中zip()函数的用法zip函数的原型为:zip([iterable, …])zip()是Python的一个内建函数,它接受一系列可迭代的对象作为参数,将对象中对应的元素打包成一个个tuple(元组),然后返回由这些tuples组成的list(列表)。若传入参数的长度不等,则返回list的长度和参数中长度最短的对象相同。也就是说,该函数返回一个以元组为元素的列表,其中第 i 个元组包含每转载 2021-11-02 18:38:00 · 19226 阅读 · 1 评论 -
with torch.no_grad()
在tensor这个类中,如果将其属性 requires_grad设置为true,它将追踪在其上的所有操作(利于反向梯度传播)。完成计算后,可以调用backward()来完成所有梯度计算,此时tensor的梯度将累积到 tensor.grad()属性中如果不想被追踪,比如在画图,输出时,可以调用 .detach()将其从追踪记录里分离出来,这样就可以防止将来的计算被追踪。此外 在优化算法时还可以用 with torch,no_grad()将不想被追踪的操作代码包裹起来,固定住,因为此时不需要梯度传播了d原创 2021-11-01 11:17:20 · 487 阅读 · 0 评论