
深度学习
文章平均质量分 52
瓜波牛排
这个作者很懒,什么都没留下…
展开
-
基于全新电脑环境安装pytorch的GPU版本
给全新的电脑环境安装pytorch的GPU版本原创 2023-08-27 23:26:22 · 1726 阅读 · 0 评论 -
SRCNN-基于深度学习的图像超分入门
使用SRCNN模型(该领域首个深度学习模型)进行图像超分原创 2022-06-02 15:46:50 · 1268 阅读 · 1 评论 -
Pytorch和TensorFlow的softmax函数使用区别小记
【背景】Pytorch官方给的CNN模型中,在最后的分类层中并没有使用softmax函数、【异同】pytorch里面提供了一个损失函数:torch.nn.CrossEntropyLoss,这里面整合了softmax函数,如果使用这个交叉熵,则不应该在最后一层再使用softmax进行激活。这类似tensorflow中的tf.nn.softmax_cross_entropy_with_logits函数的功能,但是在命名上具有迷惑性。如果在绘制AUC时候,需要拿到每个类别的分类则在pytorch.原创 2021-01-04 23:43:09 · 787 阅读 · 1 评论 -
Pytorch入门注意知识点
前言我早期用的是tensorflow的底层框架,不仅定义一个卷积层都需要六行代码,而且需要图(graph), 会话(session) , 命名空间(name_scope), 占位符(Place_holder)等概念,然后我改用了tensorflow的slim模块,虽然简洁了很多,但是目前官方(Google)已经停止维护,社会资源也相对匮乏。所以我决定转入Pytorch大军。Pytorch计算是使用的动态图,每一次前向传播都会创建一幅新的计算图,而tensorflow计算是使用的静态图,静态图一旦创建就不原创 2020-11-14 15:09:45 · 628 阅读 · 0 评论 -
双向循环神经网络和深层循环神经网络 (吴恩达老师_学习笔记)
双向循环神经网络(Bidirectional RNN)双向RNN模型(BRNN),可以在序列的某点处不但获取之前的信息,同时还可以获取这个序列点之后的信息,说的炫酷点就是get information from the future。而标准的RNN blocks、GRU units、LSTM units都只是前向的(单向)。标准的RNN blocks:双向连接是增加了反向循环层,(左箭头代表反向连接)先是从左到右的前向传播计算紫色框内的 ,然后再从右到左的前向传播计算绿色框内的 ,然原创 2020-11-11 21:48:46 · 981 阅读 · 0 评论 -
LSTM长短时记忆网络 (吴恩达老师_学习笔记)
目录前言GRU复习LSTM的基本版本LSTM的常用版本前言LSTM(long short term memory)翻译为长短时记忆网络,甚至是一种比GRU(门控循环单元)更有效的方法,让模型在序列中学习非常深的连接。GRU复习对于GRU,有更新门Γu (the update gate)相关门Γr (the relevance gate) 是代替记忆细胞的候选值,然后使用更新门Γu 来决定是否要用 更新。LSTM的基本版本注意了,这里不再有的情形,现在.原创 2020-11-11 20:47:36 · 1297 阅读 · 0 评论 -
GRU门控循环单元 (吴恩达老师_学习笔记)
目录前言RNN的基本单元GRU基本单元(简化版)GRU基本单元(完整版)前言门控循环单元(Gated Recurrent Unit(GRU))是2014年成熟的一个技术,其改变了RNN的隐藏层,使其可以更好地捕捉深层连接,改善了梯度消失问题。RNN的基本单元更具体一些:(把上图中a<t>的矩阵相乘展开了)GRU基本单元(简化版)GRU增加了一个新的变量c,代表记忆细胞(cell)。记忆细胞的作用是提供了记忆的能力,比如说一只猫是单数还是复数,.原创 2020-11-11 19:32:13 · 929 阅读 · 2 评论 -
传统循环神经网络的问题 (吴恩达老师_学习笔记)
典型的循环神经网络具有两个显著问题(1)无法利用后文信息,只能利用前面的序列数据。解决办法-双向循环神经网络(2)梯度消失。举个语言例子:(1)“The cat, which already ate ……, was full.”,前后应该保持一致,因为cat是单数,所以应该用was。(2)“The cats, which ate ……, were full.”,cats是复数,所以用were。这个例子中的句子有长期的依赖关系,最前面的单词对句子后面的单词有影响。但是上图这种基本的RN原创 2020-11-11 15:49:45 · 790 阅读 · 0 评论 -
语言模型和序列生成 (吴恩达老师_学习笔记)
前言语言模型的工作是计算出某个特定的句子它出现的概率。、语料库编码如何建立一个语言模型?需要先构造一个训练集,包含一个很大的文本语料库。在语料库中,一个句子通过one-hot向量编码,得到在字典中的索引。另外,用<UNK>标记未知的词语,用<EOS>标记每个句子的结尾。构建RNN模型对于RNN的第一步,即第0个时间步,在第1个时间步,要计算激活项 ,它是以 作为输入的函数,而 会被设为0向量。在之前的 按照惯例也设为0向量,于是..原创 2020-11-11 15:21:39 · 807 阅读 · 0 评论 -
循环神经网络入门(吴恩达老师_学习笔记)
前言序列模型在语音识别、自然语言处理等有时序信号的领域中引起了变革性的改变。例子:语音识别、音乐产生、情感判断、DNA序列分析、机器翻译、视频动作翻译、语句中识别关键字词数学符号规定假设要构造一个模型,能识别句子中的模型,现在标签用0表示非人名,1表示人名。这个输入数据是9个单词组成的序列,用来索引这个序列的中间位置。例如代表Harry,代表1。训练样本 的序列中第t 个元素用 这个符号来表示。如何表示一个句子里的单个的词?构造词典。可以通过one-hot编码来表..原创 2020-11-10 11:04:37 · 658 阅读 · 0 评论 -
神经风格迁移 (吴恩达老师_学习笔记)
目录前言:代价函数(Cost function)内容代价函数(content cost function)风格代价函数(style cost function)前言:神经风格迁移是指一幅画提供内容(c),一幅画提供风格(s),然后生成一幅新的图像(G)代价函数(Cost function)神经风格迁移算法的概要,定义一个生成图片G的代价函数,并将其最小化其实只需要一个超参数就行,但提出神经风格迁移的作者使用了两个超参数。训练过程:先随机生成一个G的图像,然后对原创 2020-11-09 20:51:01 · 824 阅读 · 0 评论 -
人脸识别 (吴恩达老师_学习笔记)
目录前言一次学习 (one-shot learning)Siamese网络前言人脸识别应用是目前应用最广的一个深度学习的落地项目,如下图所示,只有真正的人脸才可以成功识别。人脸验证(face verification):判断输入图片和名字是否相符,是一个1:1的问题。人脸识别(face recognition):是一个1:K的问题,假如人脸验证的准确率是99%,那么一个识别100人的系统则犯错概率是1%×100,即100人中很有可能会识别错误1个人,这是无法落地的。.原创 2020-11-06 23:27:37 · 919 阅读 · 1 评论 -
目标检测入门_下(吴恩达老师_学习笔记)
交互比(Intersection over union)交互比可以用来判断检测算法的好坏黄色面积除以绿色面积,IoU的面积>0.5(阈值),则检测正确。非极大值抑制(Non-max suppression)假设需要在这张图片里检测汽车,按照上个博客中提到的bounding box方法,假设上面放个19×19网格,这辆车只有一个中点,所以理论上应该只有一个格子做出有车的预测。但是在实践中,对于每个格子都运行一次目标定位算法,会可能让多个格子都认为这个车的中点在这个格子内,即最后可能会对原创 2020-11-05 20:16:57 · 783 阅读 · 0 评论 -
目标检测入门_上(吴恩达老师_学习笔记)
前言:我已经一年半没有看过吴恩达老师的视频了,最近不容易开完了题,终于可以从科研中抽出点时间学习下自己感兴趣的东西了,嘿嘿~目标定位定位:不仅要用算法判断图片是不是汽车,还需要在图片中标记它的位置。检测:图片中有多个对象,要确定多个对象的位置。假设图片需要定位3个不同类别, 注定位问题中一张图片只会出现1个类别,则神经网络的输出y意义为:Pc表示图片中是否有检测的目标,bx,by,bw,bh(边界框的位置),C1, C2, C3表示属于哪一类(如1,0,0)这个时候如果损原创 2020-11-04 20:53:33 · 478 阅读 · 0 评论 -
EEGnet模型论文讲解(画图详解三种卷积层操作)
我录了一个讲解视频:https://www.bilibili.com/video/BV1si4y1s7g7/目录一、整体介绍二、梳理激活函数三、图解三种卷积层 (核心内容)四、总结一、整体介绍EEGnet是为专门一般的脑电图识别任务而设计的通用且紧凑的卷积神经网络。(设计思路借鉴了MobileNet)下图是EEGnet的整体结构图,只有三个卷积模块,重点是depthwise conv 和separable conv这两个卷积模块。表格表明了EEGnet的...原创 2020-05-25 12:02:28 · 18269 阅读 · 7 评论 -
卷积神经网络中关于全局平均池化代替全连接层、以及参数计算等的一些思考
一、引发思考的实验与问题:在一个非常小的二分类样本集(样本总数目63,“10-crop”法数据增强10倍,样本为矩阵保存为图片),通过ALexNet模型和VGG模型做分类任务,无论怎么调超参数,留出法重复50次的实验情况大致都如图A所示,而用Inception_v1的效果可以达到如图B所示。我就很奇怪为什么效果会差别这么大?按道理就算inception_v1模型有多尺度(并联卷积层)的设计思想,准确率和AUC的值是会提升,但不会提升这么多,而且在训练集的效果差距也太大了。为了研究这个问题,我首先原创 2020-05-10 22:06:13 · 5630 阅读 · 6 评论 -
Attention机制和SE-net论文总结
attention机制注意力机制(Attention Mechanism)源于对人类视觉的研究。在认知科学中,由于信息处理的瓶颈,人类会选择性地关注所有信息的一部分,同时忽略其他可见的信息。实现这一能力的原因是人类视网膜的不同部位具有不一样的信息处理能力,即不同部分的敏锐度(Acuity)不同,人类视网膜中央凹部位具有最高的敏锐度。为了合理利用有限的视觉信息处理资源,人类需要选择视觉区域中的特...原创 2020-05-06 15:35:47 · 4858 阅读 · 16 评论 -
卷积层特征的可视化
前言与背景:很多论文都提到可视化卷积层的特征图,如这篇SCI二区的IEEE论文,最早提出可视化卷积层工作的好像是2014年的一篇顶会。这篇论文有一部分的工作就是可视化卷积层的输出,它选择了可视化第一层卷积层和最后一层池化层,认为这样有助于理解与解释卷积神经网络。一般观点都认为卷积神经网络是先提取低层次特征(例如点、线),再提前高层次的抽象特征。实现方法:我用的深度学习框架是Te...原创 2020-04-09 23:06:19 · 4133 阅读 · 1 评论 -
【迁移学习】两种是否加载网络层的预训练参数方法
前言:我最近在研究迁移学习在医学图像中的应用,通过摸索掌握了两种是否加载网络层的预训练参数方法,具体而言就比如A卷积神经网络一共有a、b、c、d四个有权重参数的网络层,我可以任意选择迁移网络层的个数,比如我可以只迁移a或者c网络层的参数,也可以同时迁移a、b、c多个网络层的参数。第一种实现方法(从模型本身入手)例如inception_resnet_v2模型: with tf...原创 2020-03-21 10:20:51 · 747 阅读 · 1 评论 -
卷积神经网络在分类层用卷积层代替全连接层的好处(附代码演示)
先说一下结论:好处:可以让同一个训练batch中的图像大小的不一样,全连接层则必须输入图像的大小固定。分析过程:全连接层—代码演示具体操作假设batch-size是1,最后的卷积层输出大小是5X5,通道数是512的话,如果接全连接层的话,就需要先reshape成一维的,这里的dim=12800(5X5X512),这里全连接层的权重矩阵大小就固定为了[12800,256](全连接...原创 2020-02-25 12:02:02 · 6414 阅读 · 1 评论 -
查看tensorflow安装的地方
背景: 由于是太久之前安装的TensorFlow,现在想手动下载几个文件到slim文件夹中,但不记得TensorFlow安装的位置了,所以需要通过代码找到TensorFlow安装的位置。解决方案:在控制行中调用python,由于我使用Anaconda管理我的python包的,所以我在下图输入python然后导入TensorFlow, import tensorflow as tf...原创 2019-12-24 22:13:59 · 929 阅读 · 0 评论 -
Batch Normalization (BN)简洁介绍
提出BN的文献: Ioffe, S., & Szegedy, C. (2015). Batch normalization: Accelerating deep network training by reducing internal covariate shift. 32nd International Conference on Machine Learning, ICML 2015...原创 2019-12-18 14:23:34 · 828 阅读 · 0 评论 -
基于TensorFlow的图片数据增强代码实现
TensorFlow常用的数据增强主要分为3部分:裁剪、翻转、变色另外还可以用过opencv实现图片的旋转 和 仿射变换第一部分裁剪:(1)如果目标图像尺寸小于原始图像尺寸,则在中心位置剪裁,反之则用黑色像素进行填充。image = tf.image.resize_image_with_crop_or_pad(img, target_height, target_width)...原创 2019-11-28 21:29:07 · 835 阅读 · 0 评论 -
解决TensorFlow多次运行神经网络冲突的问题
问题来源:为了验证神经网络的稳定性,我把数据集随机划分了10次(每次都有训练集和测试集),那怎么让神经网络自动跑十次,得出平均准确率呢?即如何让用tf搭建的神经网络在多个数据集中依次训练?如果只是简单的加for循环:会导致如下错误:ValueError: Variable InceptionV3/Conv2d_1a_3x3/weights already exists, disal...原创 2019-10-29 20:30:35 · 1826 阅读 · 2 评论 -
tensorflow的四个交叉熵函数写法区别
1. tf.nn.sparse_softmax_cross_entropy_with_logits()与tf.nn.softmax_cross_entropy_with_logits的区别区别就是sparse的labels是int类型,而非sparse的labels是one-hot类型。2.tf.losses.softmax_cross_entropy和tf.nn.softmax_...原创 2019-10-25 09:37:32 · 368 阅读 · 0 评论 -
神经网络的ROC曲线绘制代码
ROC曲线的横轴为假正例率(FPR), 纵轴为真正例率(TPR),其曲线下面的面积为AUCFPR = FP/(FP+TN)TPR = TP/(TP+FN)绘制ROC曲线的关键是弄懂ROC曲线的含义,然后改变分类概率的阈值。代码说明: predict是用tensorflow写的神经网络计算出来的分类概率, j是从0%~100%的分类概率阈值(默认的二分类概率阈值是...原创 2019-10-17 19:13:37 · 6902 阅读 · 3 评论 -
tensorboard入门代码
import tensorflow as tfwith tf.name_scope("input1"): input1 = tf.constant([1.0, 2.0, 3.0], name="input1")with tf.name_scope("input2"): input2 = tf.Variable(tf.random_uniform([3]), name=...原创 2019-10-12 20:33:29 · 357 阅读 · 0 评论 -
tensorflow的GPU安装(cuda9.2.148, cudnn7.2.1,GTX1060)
TensorFlow的GPU安装是非常麻烦的,特别是在版本匹配问题上,所以要做好心理准备,我花了8个小时才安装好。首先介绍一下我最后安装成功的环境 :windows10, python3.6, tensorflow-gpu1.9.0(非官方),Visual Studio2015, cuda9.2.148, cudnn7.2.1,GTX1060这里介绍一下安装流程:一、安装cud...原创 2019-03-25 23:34:09 · 3739 阅读 · 7 评论 -
经典卷积神经网络结构——LeNet-5、AlexNet、VGG-16
作者:wuliytTaotao 地址:https://www.cnblogs.com/wuliytTaotao/p/9544625.html1. LeNet-5(modern)1.1 LeNet-5 结构:输入层图片大小为 32×32×1,其中 1 表示为黑白图像,只有一个 channel。卷积层filter 大小 5×5,filter 深度(个数)为 6,padding 为...转载 2019-03-24 21:26:07 · 1027 阅读 · 0 评论 -
tensorboard可视化使用问题解决
环境: Windows、python3、jupyter notebook、anaconda、tensorflow(CPU版本)我用jupyter写好程序,生成的文件存放在logs文件夹中,想用cmd命令行模式启动tensorboard。但是今天使用tensorboard的时候出现了一堆问题,花了半个下午才解决,这里记录一下其中的典型问题:tensorFlow的问题: ...原创 2019-03-07 21:26:49 · 3680 阅读 · 2 评论 -
CNN卷积神经网络简单介绍与详细搭建注释-识别mnist手写黑白数字
卷积神经网络(CNN)是在计算机视觉中经常用到的的学习模型。(详细注释版代码在后面)CNN是深度神经网络(DNN)的改进版本,加上了convolution(卷积层)和pooling(池化层)以及padding(填充)操作。注:下面引用的图片均来自台大李宏毅老师 卷积神经网络的结构如上图所示,...原创 2019-03-11 10:33:54 · 1215 阅读 · 1 评论 -
深度学习中张量(Tensor)的理解
在深度学习中,TensorFlow是一个非常流行的框架,而tensor就是张量的意思。张量是矩阵的扩展与延伸。标量 向量 矩阵 3阶张量 n阶张量 只有大小 有大小和方向 由行列两个向量组成 由行列高三个向量组成 由N个互相垂直的向量组成 一维空间 二维空间 三维空间 N维空间 Tensor的对象有...原创 2019-03-10 14:10:42 · 7997 阅读 · 0 评论 -
关于cross_entropy = tf.nn.sparse_softmax_cross_entropy_with_logits的思考
今天在学习过程中产生了一个小疑问,现记录如下:在利用TensorFlow搭建图像分类器中 cross_entropy = tf.nn.sparse_softmax_cross_entropy_with_logits(),这个函数把交叉熵和softmax函数写在一起,是可以提高运算速度吗?还是仅仅把减少代码行数呢?我以前的做法是先用softmax求出需要被识别的物体在每个类别的概率,再计...原创 2019-03-29 21:06:49 · 393 阅读 · 2 评论 -
TensorFlow猫狗大战完整代码实现和详细注释
运行环境:Windows10,TensorFlow1.10(GPU版本),python3.6,编译器pycharm文件说明(1)data文件夹下包含test和train两个子文件夹,分别用于存放测试数据和训练数据,从官网上下载的数据直接解压到相应的文件夹下即可。(2)venv文件夹用于存放加载anaconda环境。(3)input_data.py负责实现读取数据,生成批次(bat...原创 2019-03-30 17:08:49 · 12068 阅读 · 30 评论 -
解决:failed to create cublas handle: CUBLAS_STATUS_ALLOC_FAILED
今天测试tensorflow的GPU版本,但是发现一个问题同一个程序(卷积神经网络)为什么在anaconda里的jupyter里就可以飞速跑完,在使用anaconda环境的pycharm里面就会说显存不足呢?报错是:failed to create cublas handle: CUBLAS_STATUS_ALLOC_FAILED(这就是显存不足的意思)两个解决方案:(1)...原创 2019-03-26 22:48:30 · 8553 阅读 · 4 评论 -
TensorFlow实现:卷积神经网络识别手势动作(有代码与演示)
完整代码见我的GitHub地址:https://github.com/xingjianzhang1997/gesture-recognition主要思路:1.构建数据集 2.建立神经网络 3.训练并调参 4.保存并调用另外我还加了界面设计和机械臂控制(通过串口通信把判断结果发给单片机,所以代码中有serial模块)效果演示: ...原创 2019-04-10 11:26:20 · 34792 阅读 · 146 评论 -
tensorflow里建立变量(tf.Variable,tf.get_variable,tf.name_scope,f.variable_scope)
一、 对于使用tf.Variable来说,tf.name_scope和 tf.variable_scope功能一样,都是给变量加前缀,相当于分类管理。这样在不同的scope中就可以给变量取相同的名字也不会冲突。二、 对于tf.get_variable来说,tf.name_scope对其无效,只有在tf.variable_scope中才可以建立共享变量。为...原创 2019-03-28 23:04:42 · 296 阅读 · 0 评论 -
TensorFlow:卷积神经网络手势识别项目的调参感悟
调参感悟对于网络的选择,我采用通用的由简入繁的做法(在吴恩达的课程中,他也多次表达了这类思想)。 首先,尝试了简单网络LeNet-5,由于网络的设计原因,对于5分类测试集上的表现非常糟糕(过拟合)。 其次,尝试复杂一些的AlexNet。经过调参和优化环节,最终取得了不错的成绩。 调参的过程无非是解决两个问题,欠拟合和过拟合。因为这个五分类问题的复杂度低,因此自始至终,我们面...原创 2019-04-12 18:04:58 · 4213 阅读 · 7 评论 -
深度学习的几种权重初始化
因为梯度是指数级变化的,所以深度神经网络很容易出现梯度消失或者梯度爆炸的问题。针对这个问题的很有效的方法是更加谨慎地选择随机初始化参数。 主要讨论四种权重初始化方法:把w初始化为0、对w随机初始化、Xavier initialization、He initialization(在ReLu网络中最常用)。把w初始化为0 parameters= np....原创 2019-08-10 10:43:12 · 694 阅读 · 0 评论 -
ResNet残差网络学习小结
目录背景介绍网络介绍残差网络起作用的原因残差网络的矩阵维度残差网络的图像识别背景介绍残差网络是由何恺明大神提出的一种卷积神经网络,作者通过152层的残差网络获得2015年ImageNet图像分类和物体识别的冠军。因为CNN能够提取low/mid/high-level的特征,网络的层数越多,意味着能够提取到不同level的特征越丰富。越深的网络提取的特征越抽象,越具有...原创 2019-08-10 20:58:18 · 770 阅读 · 2 评论