深度学习手记
文章平均质量分 75
llh_1178
这个作者很懒,什么都没留下…
展开
-
成功解决Error: No module named 'keras_retinanet.utils.compute_overlap'
在调用retinanet-train的时候,出现如下问题:这是因为在安装setup.py文件的时候,需要对导入的compute_overlap文件的进行转换,因为,它的格式是以.pyx结尾。所以,要进行如下操作:python setup.py build_ext --inplace...原创 2020-02-24 11:10:13 · 2293 阅读 · 0 评论 -
在TEB数据集上搭建翻译模型——Seq2Seq
import tensorflow as tf# 语言预处理流程(数据里面的单词已经全部转化为单词编号)# 使用Dataset从一个文件中读取一个语言的数据。# 数据的格式为每行一句话,单词已经转化为单词编号。class PrepDataset(object): def __init__(self, src_path, trg_path, batch_size, max_len,...翻译 2019-04-17 09:13:44 · 1058 阅读 · 1 评论 -
深度学习手记(十)之TensorFlow中求loss的三种函数对比
在搭建神经网络模型时,都会计算模型的loss,再进行反向传播优化参数。而在TensorFlow中计算loss的函数有很多,其中使用比较多的是:tf.losses.sparse_softmax_cross_entropy()tf.nn.sparse_softmax_cross_entropy_with_logits()tf.nn.softmax_cross_entropy_with_lo...原创 2019-04-17 21:39:51 · 1949 阅读 · 0 评论 -
总结在CentOS7上搭建CUDA10+cudnn7的Tensorflow-gpu环境的经验
经过三天的反反复复安装cuda和cudnn搭建tensorflow-gpu1.13.1环境之后,得到了一些经验,想在这里与大家分享一下:第一、选择安装驱动的时候一定要符合自己机型的显卡型号,可以安装NVIDIA驱动检测软件对自己的机型显卡进行检测。1.安装NVIDIA驱动检测sudo yum install nvidia-detect2.查看显卡驱动型号nvidia-detect ...原创 2019-06-06 15:42:24 · 4503 阅读 · 0 评论 -
在CentOS下安装dlib库
dlib库可以直接用来检测人脸,为后续的人脸识别等其他模型的构建提供了方便。但是,在安装dlib库时,会遇上很多问题,特别时用pip安装时,因为没有安装cmake和boost等工具就会出错。首先,安装gcc和gcc-c++yum install gcc gcc-c++然后,再安装cmake,boost编译dlibyum install cmake boost最后,安装依赖python...原创 2019-08-12 15:46:23 · 4208 阅读 · 0 评论 -
深度学习手记(九)之Inception-v3实现迁移学习
在训练神经网络模型时,往往需要很多的标注数据以支持模型的准确性。但是,在真实的应用中,很难收集到如此多的标注数据,即使可以收集到,也需要花费大量的人力物力。而且即使有海量的数据用于训练,也需要很多的时间。因此为了解决标注数据和训练时间的问题,可以考虑使用迁移学习。 所谓的迁移学习,就是将一个问题上训练好的模型通过简单的调整使其适用于一个新的问题,即只改变训练好的模型最后一层全连接层,而保留...转载 2019-04-05 10:56:04 · 2559 阅读 · 3 评论 -
深度学习手记(八)之PTB实现LSTM模型
PTB(Penn Treebank Dataset)文本数据集是语言模型学习中目前最广泛使用的数据集。下面将使用它构建一个长短期记忆网络(LSTM)。本文中只讲相应的代码实现,而关于LSTM的理论可以阅读这篇文章——Understanding LSTM Networks。 下面是本次构建LSTM的示意图,从图中可知,输入的词向量维度为(20,35,650),这分别代表的是批次数(batch...转载 2019-03-26 20:40:33 · 2552 阅读 · 1 评论 -
深度学习手记(二)之占位符Placeholder
TensorFlow是一种符号式编程,它里面有各种计算流图和变量,今天来介绍一种占位符,它的好处是可以避免生成大量常量来提供输入数据,提高了计算图的利用率。其实,今天介绍这个Placeholder占位符还有一个原因:就是使用它经常会出现下面问题: (1)ValueError: Cannot feed value of shape (2,) for Tensor ‘input_2:0’, whic...原创 2018-03-15 09:57:41 · 6180 阅读 · 2 评论 -
深度学习手记(三)之激活函数
激活函数在神经网络模型中是非常重要的一步。如果没有激活函数,那么不管神经网络有多少层,整个网络都是线性的,从而没有办法解决复杂的分类问题。 那么激活函数有哪些呢? 在维基百科上可以查到:https://en.wikipedia.org/wiki/Activation_function 在这里介绍几个比较常用的激活函数: relu: 根据公式,我们可以用python代码简单实现:...原创 2018-03-22 13:14:32 · 407 阅读 · 0 评论 -
深度学习手记(四)之线性模型
使用深度学习框架Keras和TensorFlow实现线性模型,自我感觉有点大材小用。但是,对于我们初学者来说能够拿来练练手也是不错的。其实,我们都知道神经网络如果不加激活函数就是线性的模型,所以实现线性模型,就不用加激活函数了。下面用Keras和TensorFlow框架分别实现一下线性模型。TensorFlow线性模型Keras线性模型1.TensorFlowimpor...原创 2018-03-25 11:22:23 · 1326 阅读 · 0 评论 -
深度学习手记(五)之优化方法
梯度下降和反向传播算法是神经网络模型的主要优化算法。梯度下降算法主要用于优化单个参数的取值而反向传播算法给出了一个高效的方式在所有参数上使用梯度下降算法,从而使神经网络的损失函数尽可能的小。在这里就不具体对梯度下降算法仔细讲解了(网上资源很多),主要对深度学习神经网络优化过程做一个介绍。 对于梯度下降算法,我们不得不说到梯度和学习率的设置,参数的梯度可以通过求偏导的方式计算得到,有了梯度还需要定...原创 2018-04-01 15:14:48 · 666 阅读 · 0 评论 -
深度学习手记(五)之LeNet-5预测模型
直接进入主题,大名鼎鼎的LeNet诞生于1994年,是最早的深层卷积神经网络之一,并且推动了深度学习的发展。LeNet模型是由Yann LeCun所完成的,他一直认为直接将每个像素作为多层神经网络的输入是不能利用图像本身所含有的空间相关性,效率大打折扣。LeNet5当时的特征有如下几点:每一个卷积层包含三个部分:卷积、降采样和非线性激活函数使用卷积提取空间特征降采样的最大池化层双曲...原创 2018-04-18 10:31:56 · 1795 阅读 · 0 评论 -
深度学习手记(六)之实现稀疏自编码算法(SAE)的优化过程
简单介绍自编码算法(SAE) 首先,自编码算法是一种无监督算法,可以自动从无标注数据中学习特征,可以给出比原始数据更好的特征描述。当然,这是利用了自编码的一种属性:稀疏性,因为具有稀疏性,完成了特征的自动选择而不是采用随机的方式,这种方式明显要靠谱一些。就跟主成分分析方法(PCA)类似,自动完成了降维的过程。自编码器要求输出尽可能等于输入,从公式也可以看出来。 并且它的隐藏层必须满足一定...原创 2018-05-11 10:04:23 · 11156 阅读 · 4 评论 -
使用TensorFlow Slim微调模型出错
在学习《21个项目玩转深度学习》这本书时,第三章使用TensorFlow Slim微调模型遇上了一个问题。 运行:python train_image_classifier.py \ --train_dir=satellite/train_dir \ --dataset_name=satellite \ --dataset_split_name=train \ --dat...原创 2018-08-31 19:02:46 · 967 阅读 · 2 评论 -
深度学习手记(七)之MNIST实现CNN模型
手写字体识别是一个很好练习CNN框架搭建的数据集。下面简单讲述一下整个模型构建的思路: 整个模型通过两次卷积、两次亚采样以及两次全连接层,整个结构比较简单,也易理解。其中,两次卷积层的大小都为5x5,过滤器分别为32和64个,为了不改变图片的大小,设置padding参数为“same”,步长为1,激活函数为Relu;两次亚采样层(Pool)的大小都为2x2,步长设为2,以至于图片尺寸缩小一倍...转载 2019-03-26 12:17:31 · 3110 阅读 · 1 评论 -
深度学习手记(一)之会话操作
Tensorflow中,如何使用会话(session)来执行定义好的运算。import tensorflow as tf# 创建一个会话。sess = tf.Session()# 使用这个创建好的会话来得到关心的运算的结果sess.run(...)# 关闭会话释放本次运行的资源sess.close()使用这种模式时,在所有计算完成之后,需要明确调用Session.close函数来关闭会...原创 2017-09-27 18:58:08 · 1567 阅读 · 0 评论