
深度学习
文章平均质量分 62
校草的舍友
这个作者很懒,什么都没留下…
展开
-
word2vec思考:word2vec为什么不使用非线性激活函数?
word2vec不是为了做语言模型,它不需要预测得更准。另外,不使用非线性激活函数可以使函数更简单,加快网络训练,也会使训练出来的词大量线性相关,这正是我们需要的。原创 2021-02-16 20:31:11 · 552 阅读 · 0 评论 -
从零开始开发自己的类keras深度学习框架7:简易版word2vec
认真学习,佛系更博。前面几章基本介绍了全连接神经网络和卷积神经网络的原理已经开发过程,本章开始将写一些自然语言处理相关的知识。当然,自然处理领域的知识点比图像处理的要复杂、抽象,可能要花更多时间来研究。首先,我们来了解一下word2vec,其目的是将一个个的词语编码成具体的向量,因为我们的深度学习模型是不能直接处理文本数据的。关于词向量的研究做了很多,目前流传较广泛的有以下几种:基于字典的方法,比如大名鼎鼎的wordnet,人工成本较高、需要不断更新; 基于统计的方法,比如利用单词的马尔科夫分原创 2021-02-16 17:34:06 · 309 阅读 · 0 评论 -
从零开始开发自己的类keras深度学习框架6 :batch_normalization
认真学习,佛系更博。本章将详细介绍batch_normalization层,batch_normalization不仅可用在卷积层,也适用于全连接层;此外,需要注意,卷积层的batch_normalization是对channel维之外所有的维度作归一化操作,其原因我觉得比较合理的是这个:https://www.zhihu.com/question/269658514/answer/827941407我们先贴batch_normalization的代码:from enet.layers.ba.原创 2021-02-13 18:06:01 · 512 阅读 · 1 评论 -
从零开始开发自己的类keras深度学习框架5:实现卷积层
认真学习,佛系更博。前面我们已经实现了一个简单的全连接层的神经网络模型,本章将实现卷积神经网络,以及详细介绍其前向传播和反向传播(2种实现方法)的实现。有了全连接层的铺垫,卷积神经网络就变得更好理解,我们先将整个代码贴上,然后来详细讨论一下前向传播和反向传播:from enet.layers.base_layer import Layerfrom enet.optimizer import optimizer_dictfrom enet.utils import img2col, col2原创 2021-02-13 17:03:30 · 415 阅读 · 1 评论 -
从零开始开发自己的类keras深度学习框架4:实现sequential
认真学习,佛系更博。本章将介绍sequential的实现,并在结尾尝试搭建一个小型的深度学习模型;前面已经介绍了数据的载入、全连接层的实现、优化器和激活函数的实现,基本内容已经铺垫好,我们希望实现的sequential如下: # 两种搭建模型方法 # 1. 列表形式 model1 = Sequential([ Dense(kernel_size=64, activation="sigmoid", input_shape=(784, )),原创 2021-02-13 16:33:36 · 418 阅读 · 0 评论 -
从零开始开发自己的类keras深度学习框架3:实现优化器和激活函数
认真学习,佛系更博。上一章介绍了全连接层的实现和原理,本章将介绍优化器和激活函数的实现;首先,我们来实现SGD优化器,sgd是最简单的优化器,每次批量计算的梯度直接运用在神经网络参数上即可,在enet下新建一个模块optimizer,并新建文件sgd.py;import numpy as npclass SGD(object): """ momentum优化器 """ def __init__(self, **k_args): # pa原创 2021-02-13 16:06:24 · 235 阅读 · 0 评论 -
从零开始开发自己的类keras深度学习框架2 :实现全连接层
认真学习,佛系更博。上一章简单介绍了如何实现数据的读取功能,本章将详细介绍如何实现神经网络最基础的层:全连接层。全连接层的原理想必很多读者都接触过很多资料,比如链式法则,反向传播,梯度下降法等等。说来惭愧,博主也早早地接触过,确一直没有仔细推敲其中的原理,以至于一直对该网络层困惑了很久,其实静下心来仔细去研究一下,会发现内部原理也很简单直观,我们先来了解一下链式法则:我们知道,神经网络的很多操作都可以当作一个个独立的层,比如卷积层、全连接层、sigmoid激活层等,其原因在于,这些操作都可以当作原创 2021-02-13 15:44:26 · 532 阅读 · 0 评论 -
从零开始开发自己的类keras深度学习框架1 :实现数据载入模块
认真学习,佛系更博。本章将介绍如何实现数据的载入功能,该模块和其他模块较为独立,也最容易实现;因此本章内容只做简单介绍,不做过多说明;我们拿mnist作为示例,目标是将mnist数据转化为神经网络模型可以处理的数据。首先获取mnist原始图片数据,并保存在本地,获取mnist图片的方法见我另一篇博客:深度学习系列:从mnist数据集中提取mnist图片拿到图片数据后我们将其放入一个文件夹中,比如我放在项目的dataset目录内,下面有10个子目录,分别对应0-9十种类型的图片,接下来将实现数据处原创 2021-02-13 14:57:22 · 325 阅读 · 1 评论 -
从零开始开发自己的类keras深度学习框架
认真学习,佛系更博。最近抽空开发了一个基于numpy的简易版的神经网络框架,类似于keras的调用方法,该框架不强烈追求网络学习的效率,旨在更好地理解神经网络模型的原理;特此记录,也期待和别人分享;我们想实现的终极目标是:使用该框架可以方便的搭建、训练、预测数据的类别,如下面代码:if __name__ == '__main__': data_handler = ImageHandler("dataset", gray=True, flatten=False, use_scale=T原创 2021-02-13 14:28:17 · 287 阅读 · 1 评论 -
深度学习系列:从mnist数据集中提取mnist图片
最近一直在回顾深度学习的知识,打算对之前学习的知识做一个梳理,首先准备从keras提供的mnist数据集中提取出mnist图片;mnist识别问题被认为是机器学习的“hello world”,算是一个入门级的实验,这里我用的keras是基于tensorflow 1.14.0的2.3.0版本,差别应该不大;当然,实际中并不需要提取mnist图片,我这样做的原因是因为一般的自定义的图片分类任务...原创 2019-10-14 10:43:57 · 1381 阅读 · 0 评论 -
welsh颜色迁移算法实现过程-python版
很久很久以前,笔者曾经研究学习过welsh算法,并用c++实现过,见链接welsh颜色迁移算法实现过程;后来心血来潮想再看看效果,却发现opencv的版本已经更迭变化太快了,且有学友也想复现一下实验效果,因此决定用再用python实现一次改算法。welsh的流程如下:1.将目标图像和样本图像转换到Lab空间;2.对目标图像和样本图像进行亮度重映射,保证后续的像素匹配正确进行;3....原创 2019-04-19 16:08:11 · 2097 阅读 · 3 评论 -
神经单元
闲来无聊,决定写一下最近的学习笔记,先从最简单的神经单元讲起。什么是神经单元?神经单元就是一个计算单元,初学者可以把它理解为一个简单的函数,我从网上截了一张图:其中x1,x2,x3为神经单元的输入,w1,w2,w3位神经单元的权重,b为神经单元的偏置,神经单元的输出为;其中f为激活函数;这就是一个简单的神经单元结构;现在假设我们需要用神经单元写一个与门的函数,则可设置如原创 2016-04-10 12:59:38 · 1310 阅读 · 0 评论 -
理解神经网络
这篇博客是接着上一篇神经单元写的:http://blog.youkuaiyun.com/zsy162534/article/details/51112337了解了什么是神经单元,就很容易理解神经网络,神经网络就是一系列神经单元连接而成构成的网络结构,如下图:这是一个5层神经单元,包括输入层和输出层,输入层也叫做数据层,一般接收数据的输入。使用神经网络训练图像数据时,将图像的第一个像原创 2016-04-26 19:35:41 · 547 阅读 · 0 评论 -
使用python实现简单全连接神经网络
最近在学习神经网络的相关知识,特在此做一个笔记。python语言的功能很强大,可以使用很少的代码实现很多功能,因此大家如果想研究深度学习的话,一定要懂得python语言。这篇笔记记录我的第一次使用python编写神经网络代码的过程,其中代码基本是借鉴neural networks and deep learning上的知识,这本书对神经网络学习有很大帮助,浅显易懂的深入了CNN的知识,初学原创 2016-08-02 15:51:33 · 7110 阅读 · 5 评论 -
利用CNN进行人脸年龄预测
很久之前做的东西了,最近做了一个人脸相似度检测,里面用到了这里的一个模型,所以抽个空把人脸年龄检测的思路总结一下。与其他CNN分类问题类似,人脸年龄预测无非就是将人脸分为多个类别,然后训练卷积神经网络,最后利用训练好的卷积神经网络进行分类即可。但是在人脸年龄分类方面,有几个比较重要的问题,第一,人脸数据集不好获取,第二,人脸对偏移,光照敏感度很高。第三,特征不容易提取。在数据集方面,我原创 2016-11-30 10:12:01 · 5148 阅读 · 5 评论 -
基于CNN的人脸相似度检测
人脸相似度检测主要是检测两张图片中人脸的相似度,从而判断这两张图片的对象是不是一个人。在上一篇文章中,使用CNN提取人脸特征,然后利用提取的特征进行分类。而在人脸相似度检测的工作中,我们也可以利用卷积神经网络先提取特征,然后对提取的特征进行利用。我们取fc7提取的4096维特征,然后对两个向量进行pairwise相似度检测,即可得到人脸相似度,然后设定一个阈值,判断是否维同一个人。原创 2016-11-30 11:00:19 · 4858 阅读 · 0 评论 -
验证码识别系列-2
上一节整理了最简单的验证码识别问题,这一节将介绍稍微复杂一些的,比如这样的:,可以看出,这类的验证码中的每个元素并没有固定的位置,单纯的靠位置来提取可能会获得较差的分割结果,因此,我们考虑使用一些图形学的方法来提取每个元素的区域。这里可以总结一下验证码识别的规律:先找到提取每个元素的方法,然后建立分类器进行识别。当然,对于特定网站的验证码,其元素的提取都可以找到一些规律,这可能需要自己去观察发现。...原创 2018-06-29 14:39:33 · 773 阅读 · 0 评论 -
验证码识别系列-1
最近做了一些验证码识别的工作,现在总结一下。本文将介绍几种类型的验证码识别任务,只针对包含英文字母和数字的简单型OCR识别。开始的时候,研究了很多关于验证码识别的相关资料,现在准确率较高的一般都是基于机器学习的,其大概可以分为两种,一种是将整个验证码图片作为分类器的输入,将相应输出作为标签,比如这篇博客:tensorflow-深度学习破解验证码。另外一种则是先分割再识别。比较这两种验证码识别方法,...原创 2018-06-26 16:42:13 · 1412 阅读 · 0 评论