深度学习理解篇
qxq_sunshine
持之以恒
展开
-
机器学习分类
根据问题本身的特征来分类,机器学习问题可分为监督学习、无监督学习、半监督学习和强化学习。 ● 监督学习(Supervised Learning)的特点是训练数据是有标签的,即对于每个输入都有相对应的输出,算法的目的是训练出能反应输入与输出之间的映射关系的模型。对于输出值是离散的(有限个数),称之为分类问题(Classification Problem);对于输出值是连续的,则称之为回归问题(Regression Problem) ● 无监督学习(Unsupervised...转载 2021-12-06 10:50:30 · 445 阅读 · 0 评论 -
正则化的原理解释——过拟合
1、欠拟合:模型过于简单过拟合:模型过于复杂,数据量太少2、如何防止过拟合?使用正则化项(L1正则化(||W||=|w1|+...+|wn|,),L2正则化())模型复杂度与参数向量有关。使用正则化后可以使得某些参数趋向于0或者等于0,达到减少参数的目的经验风险最小化——》结构风险最小化(加上正则化项)正则化<——>带约束条件,即减少解空间,减少模型复杂度3、L1正则具有稀疏性。为什么使得很多参数的值变成0.从解空间的形状:L1正则有棱有角,更容易在顶点处原创 2020-12-16 21:51:08 · 276 阅读 · 0 评论 -
分类网络中的类激活热力图——Grad CAM
1、背景卷积神经网络是一种黑盒技术,通过理论推导,以及梯度传播,去不断逼近局部最优解。但神经网络究竟是怎么做出判断和决策的,需要不断地探究。近些年来有一些这方面的研究,类激活热力图(CAM)就是一个方面。热力图通常是用来对类别进行划分的图像,它有点像红外成像图,温度高的地方就很红,温度低的部分就呈现蓝色。同理,我们使用热力图可以以权重的形式来展现,神经网络对图片的哪一部分激活值最大。比如输入到猫狗分类,如果卷积神经网络判别是猫,那它的热力图普遍分散在猫身上,而至于它是根据猫的哪一部分来判别,就利用了翻译 2020-11-12 14:49:21 · 3163 阅读 · 0 评论 -
label smooth的理解
0. label smoothing的选择label smoothing的选择label smoothing是一种正则化的方式,全称为Label Smoothing Regularization(LSR),即标签平滑正则化。在传统的分类任务计算损失的过程中,是将真实的标签做成one-hot的形式,然后使用交叉熵来计算损失。而label smoothing是将真实的one hot标签做一个标签平滑处理,使得标签变成又概率值的soft label.其中,在真实label处的概率值最大,其他位置的概率翻译 2020-09-09 11:21:45 · 10564 阅读 · 7 评论 -
plt知识点整理——keras分类测试
plt知识点整理,写的比较全面的博客:https://www.cnblogs.com/zhizhan/p/5615947.html(感谢作者)********************************下面是keras分类测试程序***************************************PS:分类结果使用混淆矩阵统计*********分享是为了更好的进步*********import numpy as npfrom keras.preprocessing.imag原创 2020-08-24 14:04:44 · 738 阅读 · 9 评论 -
cam和grad-cam深度学习特征图可视化,及代码实现
文章名称:Grad-CAM:Visual Explanations from Deep Networks via Gradient-based Localization该文章提出一种卷积神经网络的解释方法,通过构建热力图(heatmap)的形式,直观的展示神经网络学校到的特征,即关注的地方到底在哪里。CAM为类激活图(class Activateion Mapping)计算流程为:将conv层 的参数全部冻结,只训练分类器的权重W,卷积的输出为(m,m,c),然后进过GAP得到一个浓缩为c大原创 2020-08-16 20:54:23 · 12473 阅读 · 9 评论 -
注意力机制的两种模块SEblock 和 CBAM模块
1.SENet模块def SE_moudle(input_xs,reduction_ratio = 16.): shape = input_xs.get_shape().as_list() se_module = tf.reduce_mean(input_xs,[1,2]) #第一个Dense:shape[-1]/reduction_ratio:即把input_channel再除以reduction_ratio,使channel下降到指定维度数 se_module =.原创 2020-07-29 20:16:11 · 11252 阅读 · 4 评论 -
Cosine decay with warmup和 周期性学习率(CLR)(学习率更新方式)
import numpy as npfrom tensorflow import kerasfrom keras import backend as K# 带有warm-up的cosine学习率def cosine_decay_with_warmup(global_step, learning_rate_base, total_steps, .原创 2020-07-21 13:20:08 · 6694 阅读 · 1 评论 -
分类网络训练技巧
该策略来自于github 上的分享:https://github.com/PaddlePaddle/PaddleClas觉得很有用,保存下来1.优化器的选择自深度学习发展以来,就有很多关于优化器的研究者工作,优化器的目的是为了让损失函数尽可能的小,从而找到合适的参数来完成某项任务。目前业界主要用到的优化器有SGD、RMSProp、Adam、AdaDelt等,其中由于带momentum的SGD优化器广泛应用于学术界和工业界,所以我们发布的模型也大都使用该优化器来实现损失函数的梯度下降。带momen转载 2020-07-15 17:30:43 · 647 阅读 · 0 评论 -
将hdf5模型保存成h5模型
resnet_mcnn_model = M_CNN(img_shape, img_shape, mask_shape, num_class)resnet_mcnn_weight = "D:/workspace/weights-improvement-150-0.9472.hdf5"resnet_mcnn_model.load_weights(resnet_mcnn_weight)print('mcnn load weight done-')resnet_mcnn_model_file = './m.原创 2020-06-29 09:55:16 · 1304 阅读 · 0 评论 -
batch_size对模型训练结果的影响
深度学习用mini-batch进行反向传播时,先将mini-batch中每个instance得到的loss平均化后再反向求梯度。即:每次反向传播的梯度是对mini-batch中每个instance的梯度平均之后的结果。所以batchsize的大小决定了相邻迭代之间的梯度平滑程度,也决定了每个epoch的时间。当batchsize太小时,相邻mini-batch间的差异太大,会造成相邻两次迭代的梯度震荡比较严重,不利于网络模型收敛; 当batchsize越大时,相邻mini-batch中的差异越原创 2020-06-17 13:25:15 · 2514 阅读 · 1 评论 -
tensorboard 拒绝了我们的连接请求
1、打开tensorboard时出现了此种错误。只需在运行时加入:tensorboard --logdir "D:\PyCharm_workspace\test\logs" --host=127.0.0.1运行成功:2、运行tensorboard时出现了错误:ValueError: Invalid format string解决办法,找到报错的位置:File "C:\...原创 2020-04-24 10:30:40 · 7176 阅读 · 2 评论 -
ValueError: setting an array element with a sequence
深度学习tensorflow框架在训练的时候,sess.run(feed_dict={image: x_tr, label: y_tr, lr: learning_rate})遇到的报错。我所使用到的解决方案是:1、图像size大小不匹配(我花了2个小时找,终于解决)2、图像数量不匹配(我写了一个程序判断图像数量是否对应和包含)# coding=utf-8import os#...原创 2020-03-04 22:46:40 · 618 阅读 · 0 评论 -
tensorflow中常用学习率更新策略
https://blog.csdn.net/dcrmg/article/details/80017200作者写的非常好转载 2020-01-03 10:31:22 · 192 阅读 · 0 评论 -
GAN的训练心得技巧(汇总)
训练WGAN的时候,有几个方面可以调参: a. 调节Generator loss中GAN loss的权重。 G loss和Gan loss在一个尺度上或者G loss比Gan loss大一个尺度。但是千万不能让Gan loss占主导地位, 这样整个网络权重会被带偏。 b. 调节Generator和Discrimnator的训练次数比。一般来说,Discrimnator要训练的比Gene...转载 2020-01-02 11:16:54 · 4409 阅读 · 2 评论 -
权重衰减防止过拟合(L2正则化)
1.、权重衰减(weight decay)L2正则化的目的就是为了让权重衰减到更小的值,在一定程度上减少模型过拟合的问题,所以权重衰减也叫L2正则化。2、L2正则化与权重衰减系数L2正则化就是在代价函数后面再加上一个正则化项:其中C0代表原始的代价函数,后面那一项就是L2正则化项,它是这样来的:所有参数w的平方的和,除以训练集的样本大小n。λ就是正则项系数,权衡正则项与C...转载 2019-12-17 12:35:25 · 1442 阅读 · 0 评论 -
Resnet网络解读
ResNet使用两种残差单元,如图6所示。左图对应的是浅层网络,而右图对应的是深层网络。对于短路连接,当输入和输出维度一致时,可以直接将输入加到输出上。但是当维度不一致时(对应的是维度增加一倍),这就不能直接相加。有两种策略:(1)采用zero-padding增加维度,此时一般要先做一个downsamp,可以采用strde=2的pooling,这样不会增加参数;(2)采用新的映射(projecti...原创 2019-11-13 17:05:39 · 282 阅读 · 0 评论 -
论文阅读之DenseASPP
一、空洞卷积(Atrous Convolution)FCN为了获得更大的感受野的特征会使用池化操作,但是这个会降低特征的分辨率,会丢失很多细节信息。而空洞卷积能够在不牺牲特征空间分辨率的同时增大特征感受野计算方式:二、ASPP将不同扩张率的空洞卷积特征级联到一起,其是由Densenet的启发而来:用HK,d(x)来表示一个空洞卷积,缺陷:ASPP模块在尺度轴上特征分...翻译 2019-06-03 19:59:36 · 3025 阅读 · 0 评论 -
gamma矫正
Gamma校正是对输入图像的灰度值进行非线性的操作,使得输出的灰度图值与输入图像灰度值呈指数关系。经过Gamma校正后的输入和输出图像灰度值关系如下图所示,横坐标是输入的灰度值,纵坐标是输出的灰度值,蓝色曲线是gamma值小于1时的输入与输出的关系,红色曲线是gamma值大于1时的曲线。。。。当Gamma值小于1时(蓝色曲线),图像的整体亮度都会提升,同时低灰度处的对比度得到增加,更加有利...翻译 2019-04-12 22:17:14 · 428 阅读 · 0 评论 -
pytorch资料链接汇总
1、(可视化)pytorch-cnn-visualizations链接:https://github.com/utkuozbulak/pytorch-cnn-visualizations2、pytorch-book 代码实现书籍:书籍《深度学习框架PyTorch:入门与实践》的对应代码,但是也可以作为一个独立的PyTorch入门指南和教程。链接:https://github.com...原创 2018-11-14 11:06:11 · 302 阅读 · 0 评论 -
pytorch中对图像的基本操作
Pytorch提供了一个torchvision.transforms的包,可以使用transforms进行如下操作:1、PIL.image / numpy. ndarray 与Tensor相互转化2、进行归一化3、对PIL.image进行裁剪、缩放等操作一、PIL.image / numpy. ndarray 转化为Tensor,常常在训练模型阶段进行数据读取,Tensor转化...原创 2018-11-15 20:49:29 · 3346 阅读 · 0 评论 -
用pytorch实现GAN——mnist(含有全部注释和网络思想)
#coding=utf-8import torch.autogradimport torch.nn as nnfrom torch.autograd import Variablefrom torchvision import transformsfrom torchvision import datasetsfrom torchvision.utils import save_i...翻译 2018-11-15 16:05:26 · 10946 阅读 · 13 评论 -
pytorch相关知识(BN、dropoutput+模型加载+损失函数)
一、在模型测试的时候,前面会使用:model.eval() 语句但是如果不写运行也会正确,因为这个方法是针对在训练网络和测试时采用不同的情况来进行的如:Batch Normalization 和Dropout1、Batch Normalization (BN)主要是针对网络的中间每一层进行批归一化处理,并且使用变换结构(Batch Normalizing Transform)保...原创 2018-11-13 22:32:19 · 404 阅读 · 0 评论 -
图片数据集+使用数据+数据预处理
1、The CIFAR-10 dataset10类,一共含有60000张32*32的彩色图片,每类大概6000张,测试集大概1000张,5000张训练集网址:http://www.cs.toronto.edu/~kriz/cifar.html2、imageNet数据集网址:http://image-net.org/3、ImageFolder 4、LSUN Classif...翻译 2018-11-13 12:59:03 · 12416 阅读 · 3 评论 -
pytorch 定义一个网络
#coding=utf-8#https://pytorch.org/tutorials/beginner/blitz/neural_networks_tutorial.html#网址:https://www.cnblogs.com/CATHY-MU/p/7760570.htmlimport torchimport torch.nn as nnimport torch.nn.functi...翻译 2018-11-13 08:47:41 · 1887 阅读 · 3 评论 -
对GAN的理解
1、网络是怎么判断两幅图像相似的?判别器D输出值是一个概率值,其公式为:,当D(x)的值越大,说明pg(x)越小, 判别器D的训练目标可以看成是条件概率 P=(Y=y|x)的最大似然估计,当y=1时,说明x来自于pdata,当y=0时,说明x来自与pg(x)则极大极小问题可以变形为: 理解篇:随机噪声图片通过生成网络生成合成图像,该图像其实就是一个数据分布Pz(),...原创 2018-11-10 20:48:00 · 580 阅读 · 0 评论 -
pytorch相关
1、autograd自动微分所以这autograd只对输出值为标量的有用,因为损失函数的输出是一个标量。variable 是tensor的外包装,variable类型变量的data属性存储着tensor数据,grad属性存储关于该变量的导师,博客解说:https://www.cnblogs.com/CATHY-MU/p/7754998.html2、构造一个小型的CNNtorch...原创 2018-11-12 22:35:16 · 129 阅读 · 0 评论 -
Improved Techniques for Training GANs论文中的创新和理解
一、题外话:非平稳性纹理合成1、目的:使用生成对抗网络来将小纹理扩展为类似于原始样本的较大纹理;基于实例的纹理合成的目的是生成纹理,捕获样本的视觉特征并保持逼真的外观。非平稳性纹理包括大规模不规则结构的纹理,或者是在颜色、局部方向和比例的某些属性中呈现空间变化的纹理。2、对抗网络(GAN)的目的需要在高位非凸的参数空间中找到一个纳什均衡。二、Improved Technique...原创 2018-11-12 22:45:00 · 851 阅读 · 0 评论 -
网络理解
卷积神经网络(CNN)由输入层、卷积层、激活函数、池化层、全连接层组成(博客:https://blog.csdn.net/qq_30979017/article/details/79506593)写得很不错呀,哈哈哈1、卷积层的作用:用它来进行特征提取有一个特性是:权值共享(只是在每一个filter上的每一个channel中是共享的;)补充一下:对于多通道图像做1*1卷积,其实...原创 2018-11-14 22:42:42 · 300 阅读 · 0 评论 -
全变分模型(TV)
转载:https://blog.csdn.net/hanlin_tan/article/details/52448803感谢博主! TVloss主要是对 图像的梯度求平方和用途:图像降噪(图像修复,复原中),TVloss是一种较为有效的正则项,来保持图像的光滑性TVloss的去噪效果还算不错,但是会导致图像变得过平滑,感觉这样的话,可能加上TVLoss就会好点了。全变分模型主要是...转载 2019-03-26 17:12:56 · 21021 阅读 · 1 评论 -
感受野计算公式
知乎上写的比较好的计算方式:https://zhuanlan.zhihu.com/p/26663577其他网页上找的东西,具体计算如下:r0=1r1=k1其中表示第n层的感受野大小, 表示第n层的卷积核大小, 表示第i层的步长...原创 2019-03-13 16:01:47 · 410 阅读 · 0 评论 -
查准率,查全率,PR曲线,ROC 曲线的含义
原创 2019-03-12 21:45:26 · 1256 阅读 · 0 评论 -
OTSU阈值分割
1. OTSU阈值分割算法:取一个最优的阈值把图像分为前景色和背景色.两部分的类间方差越大,说明两部分的差别越大,便能有效的分割图像...本算法的最关键是找到最优阈值.以下步骤是在网上找的OTSU阈值处理(最大类间方差),算法步骤如下:【1】统计灰度级中每个像素在整幅图像中的个数。【2】计算每个像素在整幅图像的概率分布。【3】对灰度级进行遍历搜索,计算当前灰度值下前景背景类间概率。...翻译 2019-03-15 10:29:35 · 1276 阅读 · 0 评论 -
Dice系数,F1-score,ROC-AUC的含义,PR曲线含义
1.Dice系数Dice距离主要是用来计算两个集合的相似性的(也可以度量字符串的相似性).计算公式如下:2. F1 scoreF1分数是用来衡量二分类模型精确度的一种指标,同时考虑到分类模型的准确率和召回率.可看做是准确率和召回率的一种加权平均.在已知精确率和召回率的情况下 求得的一种平均的结果.3. 各种指标的含义precision: 预测为对的当中,原本是对的比...翻译 2019-03-14 22:36:56 · 17274 阅读 · 0 评论 -
分类算法中常用的损失
损失函数是用来衡量模型的预测值和真实值之间的不一致程度,它是一个非负的真实值,值越小代表模型的性能就越好.在分类算法中,损失函数常表现为:损失项+正则项. 式子表现形式如下: 其中,前一项表示损失项, 后一项表示正则项(惩罚项).损失项的表现形式主要有0-1损失, log损失, Hinge损失, 指数损失, 感知损失.1, 0-1损失主要是用来在分类问题中, 也被称为Gold st...原创 2019-03-09 15:37:35 · 1160 阅读 · 0 评论 -
利用sobel算子计算图像的梯度(python+opencv)
sobel算子计算的梯度图是带有方向的代码实现如下:#coding=utf-8import cv2import numpy as np#利用sobel算子计算图像的梯度img=cv2.imread("3.jpg",cv2.IMREAD_UNCHANGED) #读入一副图像,其中包括alpha的值 imread_unchanged#cv2.sobel(src,ddepth,d...原创 2019-01-08 20:42:10 · 8029 阅读 · 3 评论 -
图像的超分辨率重建SRGAN与ESRGAN
SRGAN传统的图像超分辨率重建方法一般都是放大较小的倍数,当放大倍数在4倍以上时就会出现过度平滑的现象,使得图像出现一些非真实感。SRGAN借助于GAN的网络架构生成图像中的细节。训练网络使用均方误差(MSE)能够获得较高的峰值信噪比(PSNR),但是恢复出来的图像会丢失图像的高频细节信息,在视觉上有不好的体验感。SRGAN利用感知损失(perceptual loss)和对抗损失(adv...原创 2018-12-23 20:59:59 · 15793 阅读 · 6 评论 -
Pytorch: detach 和 retain_graph,和 GAN的原理解析
转载知乎文章:https://zhuanlan.zhihu.com/p/43843694写的特别好,看的很明白.谢谢作者本人观察 Pytorch 下的生成对抗网络(GAN)的实现代码,发现不同人的实现细节略有不同,其中用到了 detach 和 retain_graph,本文通过两个 gan 的代码,介绍它们的作用,并分析,不同的更新策略对程序效率的影响。这两个 GAN 的实现中,其更新...翻译 2018-10-08 21:21:37 · 7731 阅读 · 14 评论