深度学习
文章平均质量分 77
深度学习
不吃饭就会放大招
人工智能领域专家博主
展开
-
使用tqdm可视化训练进程
是一个可以显示进度条的模块:在深度学习训练中,经常要用 tqdm 模块可视化训练进程,最常用的就是在 epoch 中添加:其实就是把 放在 里面。原创 2020-04-14 22:04:15 · 4061 阅读 · 1 评论 -
旋转矩阵
旋转在二维中是绕着某一个点旋转,在三维中是绕着某个轴旋转。二维旋转绕原点的二维旋转通常在做数据增强时,就会对图像进行二维旋转,转载 2019-09-18 19:47:42 · 4771 阅读 · 0 评论 -
欧式距离变换及代码
基本概念欧式距离变换(Euclidean distance transform)用于将 二值图像 变换为 灰度图像,灰度图中各个像素点的灰度级与该像素点到背景像素的最小距离有关。按距离类型划分,距离变换可分为:非欧氏距离变换 和 欧氏距离变换(EDT)。其中 EDT 精度高,与实际距离相符,应用更广泛。在二维平面上定义两点,那么他们之间的欧氏距离表示为:D=(x1−x2)2+(y1−y2)...原创 2019-09-18 13:16:56 · 4153 阅读 · 0 评论 -
【小记】高斯核函数
高斯核函数高斯核函数 (Gaussian kernel),也称径向基 (RBF) 函数,用于将有限维数据映射到高维空间。通常定义为空间中任意一点 xxx 到某一中心点 x′x'x′ 之间的欧式距离的单调函数。高斯核函数定义:k(x,x′)=e−∣∣x−x′∣∣22σ2k(x,x') = e^{- \frac{||x-x'||^2}{2\sigma ^2}}k(x,x′)=e−2σ2∣∣x...原创 2019-10-22 23:50:01 · 16167 阅读 · 0 评论 -
【总结】激活函数 & 损失函数
S 型函数,也称为 S 型生长曲线、Logistic 函数。Sigmoid 函数常被用作神经网络的阈值函数,将变量映射到 (0,1) 之间,可以用来做二分类。定义域:任意实数值域:0 到 1计算公式:1/(1+exp(−x))1 / (1 + exp(-x))1/(1+exp(−x))(1)函数特性(2)Sigmoid 函数公式代码实现:(3)Sigmoid 函数的导数代码实现:(4)Sigmoid 优点(5)Sigmoid 缺点由图可知,sigmoid 函数的导数从 0 开始向两边走,原创 2020-03-04 13:27:13 · 1783 阅读 · 0 评论 -
分类网络(一)VGG
VGG论文:https://arxiv.org/abs/1409.1556VGG 有六种结构配置:以 VGG-16 为例:VGG-16 包含 5 个 block,每个 block 最后为 maxpooling 层,网络最后有 3 个 FC 层。由于只有卷积层和全连接层有权重,所以它们合称权重层,共 13 + 3 个,这也是 VGG-16 名称的由来。卷积层参数:卷积层 conv3 表示...原创 2019-09-01 23:22:13 · 4671 阅读 · 0 评论 -
深度学习中的网络总结
从原创 2020-03-05 11:21:40 · 4827 阅读 · 1 评论 -
恢复特征图分辨率的方式对比:反卷积,上池化,上采样
利用 CNN 做有关图像的任务时,肯定会遇到 需要从低分辨率图像恢复到到高分辨率图像 的问题。解决方法目前无非就是 1)插值,2)反卷积一般 上采样 (upsamping) 就使用了插值法,包括 “最近邻插值”,“双线性插值”,“双三次插值”。这些方向好比时手工的特征工程,网络是不会对此有任何学习行为的。如果想要让网络学习如何才能最优地进行上采样,就可以使用 转置卷积,转置卷积没有预先定义好的插值方法,而是具有可学习的参数。卷积(Convolution)的主要目的就是对事物进行特征提取,然后根据特征对其进行原创 2019-12-03 09:22:39 · 6461 阅读 · 0 评论 -
深度学习调参策略:lr_scheduler的选择
转载文章:https://zhuanlan.zhihu.com/p/52608023caffe 框架中的策略包括 fixed,step,exp,inv,multistep,poly,sigmoid。1. fixedfixed,即固定学习率,这是最简单的一种配置,只需要一个参数。如上图,在整个的优化过程中学习率不变,这是非常少使用的策略,因为随着向全局最优点逼近,学习率应该越来越小才能避免跳过最优点。2. step采用均匀降低的方式,比如每次降低为原来的 0.1 倍。这是非常常用的一个学习率迭代策略,转载 2019-10-09 19:35:36 · 1957 阅读 · 1 评论 -
深度学习调参策略:Batch size的选择
【1】Batch size参考:深度学习中Batch size对训练效果的影响一般来说,在合理的范围之内,越大的 batch size 使下降方向越准确,震荡越小,这就好比决定往哪里走时参考了很多样本的意见,减少了小样本引入的随机性,但是越大的 batch size 也意味着训练时占用的显存更多。【batch的选取类型】Full Batch Learning:全数据集学习,通常用于数据集比较小的情况,每次训练时将所有数据都送入网络中进行学习,相当于 batch size = 训练集大小,这种方式能够保证梯度原创 2020-03-04 13:17:34 · 1977 阅读 · 0 评论 -
深度学习中的数据预处理
数据增强1.对图像进行翻转import cv2image = cv2.imread('cat.jpg')# 竖直翻转cv2.flip(image, 0)# 水平翻转cv2.flip(image, 1)# 水平竖直翻转cv2.flip(image, -1)实践一下:import cv2image = cv2.imread('cat/1.jpg')img1 = cv2.fl...原创 2019-09-06 21:44:14 · 270 阅读 · 0 评论 -
区分Batch、Epoch、Iterations
解释:对于一个有 2000 个训练样本的数据集。将 2000 个样本分成大小为 500 的 batch,那么就将该数据集划分为了 4 个batch,且完成一个 epoch 需要 4 个 iteration。Epoch一个 epoch 指所有的数据送入神经网络中完成一次前向计算及反向传播的过程。训练时一个 epoch 往往是不够的,因为将所有数据只迭代训练一次可能无法收敛,需要反复...原创 2019-03-08 19:57:20 · 1328 阅读 · 0 评论 -
下采样和池化的区别
经过 @纸上得来终觉浅~ 同学指点,更新之前的错误:下采样和池化其实只是叫法不同,是同一个东西。更正:下采样和池化应该是包含关系,池化属于下采样,而下采样不局限于池化,如果卷积 stride=2,此时也可以把这种卷积叫做下采样。# 池化通常池化层紧跟在 CNN 的卷积层之后。池化方法:池化的作用:关于池化的神解释:池化 = 涨水池化的过程 = 升高水位(扩大矩阵网格)池化的目的是为了得到物体的边缘形状可以想象水要了解山立体的形状,水位低时得出山脚的形状,水位中等时得出山腰的形状,水位高时得出山顶的形状,原创 2019-05-20 18:24:02 · 14992 阅读 · 4 评论 -
验证集和测试集的区别?
昨天一直在想验证集和测试集的问题,越想越迷…问题是这样的,大部分网络的训练都是这么一个套路:训练迭代 n 个 epoch 以后就进行一次验证,然后网络会输出在验证集上的 loss 或者其他评价指标。所以如果我直接把测试集作为验证集,不就可以看到每隔 n 个 epoch 模型在测试集上的表现了嘛?而且训练结束前的最后一次验证也就相当于测试了,反正验证集又不会被训练,这样还省的做测试了。=============== 查资料后的一点理解 =================参考文章:https://blog.cs原创 2019-08-02 15:06:10 · 43111 阅读 · 23 评论 -
深度学习中图像预处理为什么要减去均值?
参考: https://www.cnblogs.com/Jerry-home/p/10109460.html一般原图为黑白图片,比如 MNIST 数据集,不需要进行图片减去均值处理,而三通道的彩色图,一般都需要。原因:我们的自然图像其实是一种平稳的数据分布,即图像的每一维都服从相同的分布。所以通过减去数据对应维度的统计平均值,来消除公共的部分,以凸显个体之间的特征和差异。好处: 加速训练迭...原创 2019-06-03 16:57:40 · 3036 阅读 · 0 评论 -
为什么将全连接层替换为卷积层?
卷积层的特点:稀疏连接,权值共享全连接层的特点:每个神经元都和上一层的所有神经元相连接两者的共同点:都是由上一层的输出与参数矩阵相乘从而得到下一层的输入所以我们得以得到结论,全连接层和卷积层实际上是可以相互转换的。举个例子:最后一个卷积层的输出为 7*7*512,即每个 feature map 的大小为 7*7,共有 512 个 feature map,然后通过一个全连接层得到了 1*1*4096 的输出,如下图所示:将全连接层转换为卷积层的关键就在卷积核参数的设置上,仍然用上面的例子:当这组卷积核作原创 2019-04-24 09:16:41 · 7545 阅读 · 5 评论 -
基于NiftyNet训练自己的数据
1. 环境准备参考官方文档:https://niftynet.readthedocs.io/en/dev/installation.html# 创建 conda 环境conda create -n tensorflow-gpu python=3.6# 安装 tensorflowpip install tensorflow-gpu>=1.13.2# 安装 niftynetgit ...原创 2019-09-22 13:41:05 · 1190 阅读 · 1 评论 -
NiftyNet安装+基本使用+运行demo
NiftyNet1. 安装NiftyNet 基于 Tensorflow,所以首先要安装 Tensorflow:conda create -n niftynet python=3.5conda install tensorflow-gpu==1.2 # for TensorFlow with GPU supportconda install tensorflow==1.2 # for...原创 2019-06-02 11:35:53 · 2728 阅读 · 4 评论 -
NiftyNet自带网络及模型
dense_vnet_abdomina_ct_model_zoodense_vnet_abdomina_ct_model_zoo 采用 Dense V-net,是一个腹部 CT 的多器官分割模型。论文:《Automatic multi-organ segmentation on abdominal CT with dense v-networks》,2017该网络分割腹部 CT 图中的 8 ...原创 2019-06-02 11:33:51 · 1548 阅读 · 2 评论 -
NiftyNet:Configuration file
原文:Configuration fileNiftyNet 的工作流可以由 NiftyNet 应用程序和配置文件完全指定,运行工作流命令: 表示要使用提供的数据训练模型 表示使用已存在的模型进行测试 后面是配置文件的路径 后面是将要 import 的应用种类:格式:这样 NiftyNet 将会导入 user/path/python/module.py 文件中名为 MyApplication 的类。NiftyNet 中已实现的应用:在 NiftyNet 工程根目录下: 命令也支持命令行翻译 2019-10-23 00:06:41 · 272 阅读 · 0 评论 -
【小记】BLAS、OpenBLAS、ATLAS、MKL
BLASBLAS的全称是Basic Linear Algebra Subprograms,中文可以叫做基础线性代数子程序。它定义了一组应用程序接口(API)标准,是一系列初级操作的规范,如向量之间的乘法、矩阵之间的乘法等。许多数值计算软件库都实现了这一核心。BALS是用Fortran语言开发的,Netlib实现了BLAS的这些API接口,得到的库也叫做BLAS。Netlib只是一般性地实现了基...转载 2019-06-12 00:13:16 · 6681 阅读 · 1 评论