神经网络学习
嘻哈过路人
这个作者很懒,什么都没留下…
展开
-
NumPy基础用法总结
1.把n维变成1维a.flatten()import numpy as npa = np.arange(1,28).reshape(3,3,3)for i in a.flat: print(i,',',end='')print(a.flatten())2.两个矩阵合并np.vstack((a,b))上下合并import numpy as npa = np.arange(1,10)b = np.arange(10,19)c = np.vstack((a, b))prin原创 2020-07-20 12:07:45 · 247 阅读 · 0 评论 -
pandas基础用法总结(1)
1.pd.Series(a,index=none)a是一维数组,series把数组中的元素默认由0~n-1排列,index是长度为n的一维数组,可以设置排列的索引号import numpy as npimport pandas as pda = np.random.random(7)b = pd.Series(a)c = pd.Series(a, index=np.arange(10,17))print(b)print(c)2.pd.date_range时间化序列pandas.d原创 2020-07-20 18:34:25 · 329 阅读 · 0 评论 -
pandas基础用法总结(2)
1.处理丢失数据frame.dropna(axis=0, how=‘any’)axis=0代表处理行,axis=1代表处理列how='any’表示有NaN就处理,how='all’表示一行都是NaN才处理frame.fillna(value=9)把表中NaN的部分都换成0frame.isnull()返回False表示数据没有丢失,返回Ture表示有数据是NaN若表格很大,不好观察是否有True,可以用np.any(frame.isnull())==True,返回Ture表示有数据是NaNi原创 2020-07-21 16:08:04 · 612 阅读 · 0 评论 -
对空洞卷积的理解
一、空洞卷积:不用池化层,因为池化在提供更大的感受野的同时,分辨率降低,会导致空间信息丢失,数据丢失。空间卷积可以避免使用down-sampling,并且在相同的计算量的前提下,提供更大的感受野。设置不同的dilation rate,感受野就会不同,就会有多尺度的信息。在原始特征f0上进行扩张率为1(普通的卷积)的空洞卷积生成f1,f1的一点相对f0感受野为33如图,在f1上做2-dilated的3 * 3卷积,生成的f2上的一点相对于f0感受野为7 * 7;若仍用普通3 * 3的卷积,则生成的原创 2020-07-30 14:05:37 · 2678 阅读 · 0 评论 -
IOU与NMS实现代码
import numpy as npimport cv2# A[0-3]分别代表左上角横坐标,左上角纵坐标,右下角横坐标,右下角纵坐标def IOU(A, B): #交集框的左上角,右下角 xA = max(A[0], B[0]) yA = max(A[1], B[1]) xB = min(A[2], B[2]) yB = min(A[3], B[3]) areaA = (A[2] - A[0] + 1) * (A[3] - A[1] + 1) # 1原创 2020-07-28 14:17:51 · 377 阅读 · 0 评论 -
unet简单实现
U-Net,主要是针对生物医学图片的分割model_partimport torchimport torch.nn as nnimport torch.nn.functional as Fclass DoubleConv(nn.Module): # Conv = > Batch_Norm = > ReLU = > Conv2d = > Batch_Norm = > ReLU def __init__(self, in_channels, out_原创 2020-09-13 21:00:31 · 1045 阅读 · 0 评论 -
非极大值抑制NMS
置信度:比如我们想估计一个城市中使用苹果手机的人数,那么我们一个人一个人问显然不现实,那么我们可以抽取一部分人(当然这些人要随机抽取),那么我们从抽取的这部分人中找到使用苹果手机的人占20%-25%,但是这么范围是一定正确的吗,显然不是,那么我们可以说我70%的信心确定使用苹果手机的人数占20%-25%,我们有一个区间,并且我们对它此一定的信心,这就是置信区间与置信度。IOU阈值(重叠率阈值)...原创 2020-03-28 15:54:58 · 1894 阅读 · 0 评论 -
1*1的卷积核和全连接层的区别
https://blog.csdn.net/qq_28468707/article/details/104092803转载 2020-03-27 23:23:25 · 1338 阅读 · 0 评论 -
防止过拟合的方法
一、数据预处理:1、去均值化把输入数据各个维度都中心化到0,如果我们不去均值化,我们容易发生过拟合。如果我们有一个非常大,通过sigmoid,它的斜率会接近0,BP求偏导的链式法则要求们把我们偏导都乘到一起,变化量太小,我们用梯度下降会学不到东西,会导致梯度弥散,发生拟合。2、归一化幅度归一化到同样的范围,我们通常用BN或IN进行归一化处理,BN与IN的区别[https://blog.c...原创 2020-03-26 20:56:56 · 2650 阅读 · 0 评论 -
交叉熵损失cross entropy loss
我们一般在回归问题中,损失函数经常会用到MSE(mean squared error),而在分类问题中,我们经常会用到CrossEntropy。我们经常把它与softmax一起用,因为我们用交叉熵计算出来的值不一定是在[0,1]之间,我们通常用softmax归一到0-1之间,这样我们可以进行物体的分类。这里,yi是预测值,y’i是label我们为什么要使用交叉熵呢?比如我们给你两组数据...原创 2020-03-25 21:52:09 · 2970 阅读 · 0 评论 -
机器学习中的数学(2)
三、特征值,特征向量Ax = λx它的几何意义是什么呢?一个变换(或者说矩阵)的特征向量就是这样一种向量,它经过这种特定的变换后保持方向不变,只是进行长度上的伸缩而已。在二维坐标系中就是一条直线同方向或反方向伸长或缩短。如果我们的数据很大,有10000维怎么办呢,我们这时候就要对数据进行降维,我们降到10维明显效果不会很好,那么我们降到两三千维应该还是可以的。给定一个矩阵:我们这里引...原创 2020-03-25 15:29:08 · 1905 阅读 · 0 评论 -
机器学习中的数学(1)
一、微积分范式:向量的1范数:向量的各个元素的绝对值之和向量的2范数:向量的每个元素的平方和再开平方根梯度:梯度的本意是一个向量(矢量),表示某一函数在该点处的方向导数沿着该方向取得最大值,即函数在该点处沿着该方向(此梯度的方向)变化最快,变化率最大(为该梯度的模)。在这里X是一个矢量,f(X)的梯度就是一个1*i的一个矩阵。Hessian矩阵:这个Hessian矩阵时一个正定...原创 2020-03-24 23:31:46 · 3327 阅读 · 0 评论 -
数据预处理中的transfroms
transfroms是pytorch的预处理模块1.RandomHorizontalFlip():以0.5的概率水平翻转图像2.CenterCrop() # 从中间裁剪3.Resize() # 更改图片大小4.ToTensor():将范围为[0,255]的图像或numpy.ndarray(H xW x C)转换为范围为[0.0,...原创 2020-03-23 18:52:38 · 2010 阅读 · 0 评论 -
torchvision.transforms模块
torchvision.transforms是pytorch中的图像预处理包,包含了很多种对图像数据进行变换的函数,我们可以通过其中的剪裁翻转等进行图像增强。1.transforms.ToTensor()将”PIL图像“或 numpy.ndarray“转换为张量。 将PIL图像或numpy.ndarray(H x W x C) [0,255]的形状转换到torch.FloatTensor(C × H × W)[0.0,1.0]的范围内。from PIL import Imagefrom tor原创 2020-07-17 17:44:17 · 733 阅读 · 0 评论 -
pytorch中tensorboard的add_scalar与add_image
writer.add_scalar(tag, scalar_value, global_step=None, ):将我们所需要的数据保存在文件里面供可视化使用tag(字符串):保存图的名称scalar_value(浮点型或字符串):y轴数据global_step(int):x轴数据from torch.utils.tensorboard import SummaryWriterwriter = SummaryWriter("logs")x = range(100)for i in x:原创 2020-07-16 11:03:13 · 14342 阅读 · 1 评论 -
pytorch快速搭建与一般搭建两层神经网络
import torchimport matplotlib.pyplot as pltfrom torch.autograd import Variablex = Variable(torch.randn(4, 10))y = Variable(torch.randn(4, 2))net = torch.nn.Sequential( torch.nn.Linear(10, 100), torch.nn.ReLU(), torch.nn.Linear(100, 100),原创 2020-07-15 12:18:47 · 306 阅读 · 0 评论 -
深度学习优化器(pytorch实现)
import torchimport torch.nn.functional as Fimport matplotlib.pyplot as pltimport torch.utils.data as Datafrom torch.autograd import VariableLR = 0.01BATCH_SIZE = 32EPOCH = 12x = torch.unsqueeze(torch.linspace(-1, 1, 1000), dim=1)y = x.pow(2) + .原创 2020-07-09 12:51:59 · 525 阅读 · 0 评论 -
L1,L2正则化
解决的问题:过拟合原创 2020-07-09 12:14:49 · 76 阅读 · 0 评论