自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(31)
  • 资源 (9)
  • 问答 (1)
  • 收藏
  • 关注

原创 从零开始开发自己的类keras深度学习框架

认真学习,佛系更博。最近抽空开发了一个基于numpy的简易版的神经网络框架,类似于keras的调用方法,该框架不强烈追求网络学习的效率,旨在更好地理解神经网络模型的原理;特此记录,也期待和别人分享;我们想实现的终极目标是:使用该框架可以方便的搭建、训练、预测数据的类别,如下面代码:if __name__ == '__main__': data_handler = ImageHandler("dataset", gray=True, flatten=False, use_scale=T

2021-02-13 14:28:17 240 1

原创 word2vec思考:word2vec为什么不使用非线性激活函数?

word2vec不是为了做语言模型,它不需要预测得更准。另外,不使用非线性激活函数可以使函数更简单,加快网络训练,也会使训练出来的词大量线性相关,这正是我们需要的。

2021-02-16 20:31:11 437

原创 从零开始开发自己的类keras深度学习框架7:简易版word2vec

认真学习,佛系更博。前面几章基本介绍了全连接神经网络和卷积神经网络的原理已经开发过程,本章开始将写一些自然语言处理相关的知识。当然,自然处理领域的知识点比图像处理的要复杂、抽象,可能要花更多时间来研究。首先,我们来了解一下word2vec,其目的是将一个个的词语编码成具体的向量,因为我们的深度学习模型是不能直接处理文本数据的。关于词向量的研究做了很多,目前流传较广泛的有以下几种:基于字典的方法,比如大名鼎鼎的wordnet,人工成本较高、需要不断更新; 基于统计的方法,比如利用单词的马尔科夫分

2021-02-16 17:34:06 251

原创 从零开始开发自己的类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 448 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 353 1

原创 从零开始开发自己的类keras深度学习框架4:实现sequential

认真学习,佛系更博。本章将介绍sequential的实现,并在结尾尝试搭建一个小型的深度学习模型;前面已经介绍了数据的载入、全连接层的实现、优化器和激活函数的实现,基本内容已经铺垫好,我们希望实现的sequential如下: # 两种搭建模型方法 # 1. 列表形式 model1 = Sequential([ Dense(kernel_size=64, activation="sigmoid", input_shape=(784, )),

2021-02-13 16:33:36 330

原创 从零开始开发自己的类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 179

原创 从零开始开发自己的类keras深度学习框架2 :实现全连接层

认真学习,佛系更博。上一章简单介绍了如何实现数据的读取功能,本章将详细介绍如何实现神经网络最基础的层:全连接层。全连接层的原理想必很多读者都接触过很多资料,比如链式法则,反向传播,梯度下降法等等。说来惭愧,博主也早早地接触过,确一直没有仔细推敲其中的原理,以至于一直对该网络层困惑了很久,其实静下心来仔细去研究一下,会发现内部原理也很简单直观,我们先来了解一下链式法则:我们知道,神经网络的很多操作都可以当作一个个独立的层,比如卷积层、全连接层、sigmoid激活层等,其原因在于,这些操作都可以当作

2021-02-13 15:44:26 432

原创 从零开始开发自己的类keras深度学习框架1 :实现数据载入模块

认真学习,佛系更博。本章将介绍如何实现数据的载入功能,该模块和其他模块较为独立,也最容易实现;因此本章内容只做简单介绍,不做过多说明;我们拿mnist作为示例,目标是将mnist数据转化为神经网络模型可以处理的数据。首先获取mnist原始图片数据,并保存在本地,获取mnist图片的方法见我另一篇博客:深度学习系列:从mnist数据集中提取mnist图片拿到图片数据后我们将其放入一个文件夹中,比如我放在项目的dataset目录内,下面有10个子目录,分别对应0-9十种类型的图片,接下来将实现数据处

2021-02-13 14:57:22 272 1

原创 深度学习系列:从mnist数据集中提取mnist图片

最近一直在回顾深度学习的知识,打算对之前学习的知识做一个梳理,首先准备从keras提供的mnist数据集中提取出mnist图片;mnist识别问题被认为是机器学习的“hello world”,算是一个入门级的实验,这里我用的keras是基于tensorflow 1.14.0的2.3.0版本,差别应该不大;当然,实际中并不需要提取mnist图片,我这样做的原因是因为一般的自定义的图片分类任务...

2019-10-14 10:43:57 1274

原创 welsh颜色迁移算法实现过程-python版

很久很久以前,笔者曾经研究学习过welsh算法,并用c++实现过,见链接welsh颜色迁移算法实现过程;后来心血来潮想再看看效果,却发现opencv的版本已经更迭变化太快了,且有学友也想复现一下实验效果,因此决定用再用python实现一次改算法。welsh的流程如下:1.将目标图像和样本图像转换到Lab空间;2.对目标图像和样本图像进行亮度重映射,保证后续的像素匹配正确进行;3....

2019-04-19 16:08:11 1883 3

原创 数独游戏解法

最近迷上了一款手机数独游戏,游戏界面如下,玩家需要根据9×9盘面上的已知数字,推理出所有剩余空格的数字,并满足每一行、每一列、每一个粗线宫(3*3)内的数字均含1-9,不重复。因此也叫作9宫格游戏。尝试自己动脑挑战游戏是一种乐趣,但是玩到后面的关卡,难度会越来越高,丧失游戏的乐趣,因此,尝试用算法来解决数独问题。我们先来看看解决数独问题的基本思路,对于一个已知某些数字的九宫格棋盘,我们...

2019-04-02 12:35:12 934

原创 python socket 断点传输文件

最近研究了一下python在计算机之间断点传输的方法,主要是应对系统中断的发生。主要原理很简单,发送端每次发送文件时,首先接收来自于接收端的一个标志信息,告诉发送端已经接收到的字节数,然后从下一个字节开始发送即可。代码如下:发送端:import socketimport structimport sysimport osimport time if __name__ ==...

2018-11-23 15:24:27 1815

原创 python socket传输文件(解决跨平台传输时数据丢失)

最近在做一个项目,涉及到本地机器和服务器之间的数据传输,因此也查了许多资料和博客。纵观来看,数据传输的一般步骤是先发送数据头,包括文件大小和文件名,然后开始传输数据。但是我的需求是发送端为Windows系统,而接收端为linux系统,使用之前的代码接收到的文件一直有损坏,导致后续工作失败。在查阅了无数资料后,终于找到一种解决办法,特记录在这里。下面是部署在发送端的代码,和网上查找的代码基本相同...

2018-11-12 15:44:36 3379 3

转载 opencv中使用BGR而非RGB的原因

原文见这里:Why does OpenCV use BGR color format文中作者在一个大会上问了OpenCV的作者为什么使用BGR格式而不是使用RGB。他得到的答案总结起来就是由于历史的原因。文中还用了一个很搞笑的故事来说明这个事实:为什么美国的标准铁路轨距为4英尺8.5英寸。对这个故事有兴趣的可以看原博文。那么这个历史原因是什么:早期开发者使用BGR作为颜色的空间的原因在...

2018-09-30 15:29:28 1618

原创 python opencv利用LAB空间讲将春天场景改为秋天

前一段时间实现了Reinhard颜色迁移算法,感觉挺有意思的,然后在代码上随意做了一些更改,有了一些发现,把Lab通道的a通道值改为127左右,可以将绿色改为黄色,而对其他颜色的改动非常小,因此可以将春天的场景变换到秋天去,通过颜色直方图统计发现:很多秋天场景中的元素的A通道的像素值都聚集在127附近。这里是核心代码:# -*- coding: utf-8 -*-import cv2i...

2018-08-23 19:41:24 547

原创 笔记本电脑故障-内存条

电脑清灰,插回电路板按开机键,电脑出现一系列故障,百度一系列经验终于排除,现在电脑不发骚了,可以安心打游戏了。内存条缺失电脑情况:开机键灯亮,电脑风扇转动,插上键盘wifi指示灯为红灯,caps lock间断性闪烁,电脑屏幕无反应。硬盘缺失:此时电脑可正常开机,不过无法进入系统,屏幕显示:no ...

2018-07-02 13:26:10 1136

原创 验证码识别系列-2

上一节整理了最简单的验证码识别问题,这一节将介绍稍微复杂一些的,比如这样的:,可以看出,这类的验证码中的每个元素并没有固定的位置,单纯的靠位置来提取可能会获得较差的分割结果,因此,我们考虑使用一些图形学的方法来提取每个元素的区域。这里可以总结一下验证码识别的规律:先找到提取每个元素的方法,然后建立分类器进行识别。当然,对于特定网站的验证码,其元素的提取都可以找到一些规律,这可能需要自己去观察发现。...

2018-06-29 14:39:33 709

原创 验证码识别系列-1

最近做了一些验证码识别的工作,现在总结一下。本文将介绍几种类型的验证码识别任务,只针对包含英文字母和数字的简单型OCR识别。开始的时候,研究了很多关于验证码识别的相关资料,现在准确率较高的一般都是基于机器学习的,其大概可以分为两种,一种是将整个验证码图片作为分类器的输入,将相应输出作为标签,比如这篇博客:tensorflow-深度学习破解验证码。另外一种则是先分割再识别。比较这两种验证码识别方法,...

2018-06-26 16:42:13 1342

原创 基于CNN的人脸相似度检测

人脸相似度检测主要是检测两张图片中人脸的相似度,从而判断这两张图片的对象是不是一个人。在上一篇文章中,使用CNN提取人脸特征,然后利用提取的特征进行分类。而在人脸相似度检测的工作中,我们也可以利用卷积神经网络先提取特征,然后对提取的特征进行利用。我们取fc7提取的4096维特征,然后对两个向量进行pairwise相似度检测,即可得到人脸相似度,然后设定一个阈值,判断是否维同一个人。

2016-11-30 11:00:19 4745

原创 利用CNN进行人脸年龄预测

很久之前做的东西了,最近做了一个人脸相似度检测,里面用到了这里的一个模型,所以抽个空把人脸年龄检测的思路总结一下。与其他CNN分类问题类似,人脸年龄预测无非就是将人脸分为多个类别,然后训练卷积神经网络,最后利用训练好的卷积神经网络进行分类即可。但是在人脸年龄分类方面,有几个比较重要的问题,第一,人脸数据集不好获取,第二,人脸对偏移,光照敏感度很高。第三,特征不容易提取。在数据集方面,我

2016-11-30 10:12:01 5011 5

原创 利用Lab空间把春天的场景改为秋天

前一段时间实现了Reinhard颜色迁移算法,感觉挺有意思的,然后在代码上随意做了一些更改,有了一些发现,把Lab通道的a通道值改为127左右,可以将绿色改为黄色,因此可以将春天的场景变换到秋天去,这里是代码:http://download.csdn.net/detail/zsy162534/9617690实现原理很简单,就像上面说的那样,不过效果很不错,贴几张结果图:

2016-08-31 11:16:49 419

原创 C++ sort函数对class类排序

sort是stl中一个经常用到的排序函数,可以对数组或类似数组(例如vector)的结构进行排序,默认为升序排序。例如下面的代码对vec进行升序排序:sort(vec.begin(),vec.end());若想降序排序,则只需加greater即可:sort(vec.begin(),vec.end(),gerater());若想对结构体进行排序,也很简单第一种

2016-08-03 10:07:05 9691 1

原创 使用python进行人脸性别分类

上面一篇文章写到了如何利用python写简单的神经网络代码,并利用全连接神经网络实现简单的mnist手写数字分类,现在我们可以利用此代码做更多的事情。有一段时间导师让我做人脸识别的问题,最简单的便是人脸性别的分类,当时是在caffe框架下面做的,但是caffe方面的资料真是少之又少,使用起来也有很多疑惑,因此特别拿出来在python上训练一遍。由于代码写的相对简单,实现的功能很少,

2016-08-02 19:52:34 5822 3

原创 使用python实现简单全连接神经网络

最近在学习神经网络的相关知识,特在此做一个笔记。python语言的功能很强大,可以使用很少的代码实现很多功能,因此大家如果想研究深度学习的话,一定要懂得python语言。这篇笔记记录我的第一次使用python编写神经网络代码的过程,其中代码基本是借鉴neural networks and deep learning上的知识,这本书对神经网络学习有很大帮助,浅显易懂的深入了CNN的知识,初学

2016-08-02 15:51:33 6982 5

原创 welsh颜色迁移算法实现过程

最近研究了一下color transfer的相关内容,自从实现了Reinhard经典颜色迁移算法后,便思考着能编写代码实现第二个经典算法:welsh算法,本人在编写调试大概一周才终于实现了出来。welsh算法基本思想:1.将目标图像和样本图像转换到Lab空间;2.对目标图像和样本图像进行亮度重映射,保证后续的像素匹配正确进行;3.从参考图片中选择一部分样本点,将这些样本点的

2016-08-01 15:48:39 4287 6

原创 理解神经网络

这篇博客是接着上一篇神经单元写的:http://blog.csdn.net/zsy162534/article/details/51112337了解了什么是神经单元,就很容易理解神经网络,神经网络就是一系列神经单元连接而成构成的网络结构,如下图:这是一个5层神经单元,包括输入层和输出层,输入层也叫做数据层,一般接收数据的输入。使用神经网络训练图像数据时,将图像的第一个像

2016-04-26 19:35:41 504

原创 神经单元

闲来无聊,决定写一下最近的学习笔记,先从最简单的神经单元讲起。什么是神经单元?神经单元就是一个计算单元,初学者可以把它理解为一个简单的函数,我从网上截了一张图:其中x1,x2,x3为神经单元的输入,w1,w2,w3位神经单元的权重,b为神经单元的偏置,神经单元的输出为;其中f为激活函数;这就是一个简单的神经单元结构;现在假设我们需要用神经单元写一个与门的函数,则可设置如

2016-04-10 12:59:38 1179

原创 C++ CopyFile函数的用法

CopyFile函数定义在Windows.h中,使用时要include之;CopyFile()使用如下:#includeint main(){ CopyFile("C:\\a.txt","C:\\b.txt",FALSE);}便可将a.txt文件复制到b.txt文件,第三个参数表示:如果目标已经存在,不拷贝(True)并返回False,覆盖目标(false);若文件路

2016-03-10 13:49:49 23858

原创 color transfer between images论文实现

今天闲来无事把经典的颜色迁移文章来拿看看,突然发现自己还没动手实现过color transfer between images这篇文章,想当初自己的毕业设计就是做的这个,真是有点惭愧。关于这篇文章的代码网上有很多,但是我找了很久,发现现在网上的代码有一个通病,一个是很乱,另一个是很多都是转载的,作者自己肯定都不太清楚是什么代码就转过来了,结果误导了很多想学习的好同志,所以决定以后养成好习惯,遇

2016-01-28 20:28:34 3754 2

原创 基于CNN的人脸识别

前些日子读了一篇关于人脸识别的文章,age and gender classificiation using convolutional neural networks,这是一篇发表在cvpr2015的一篇文章,文章写得很好,条理清晰,逻辑性强,非常适合深度学习者学习,在这里特别做一个相关笔记。当然,我也尝试着去实现这篇论文,文章中说到要用adience benchmark人脸数据库,我上网上

2016-01-28 19:43:05 10481 21

welsh算法-python版

welsh算法实现灰度图像的色彩迁移,python版,图像处理初学者可以借鉴下。

2019-04-19

验证码识别2

验证码识别代码,在dlib环境下运行,纯C++编写。整个项目。

2018-06-29

验证码自动识别-1

验证码识别的代码,其中,make_data为数据处理文件,train为训练文件,test为测试文件,explore为一些需要使用的函数。

2018-06-26

场景时间迁移

将春天场景变换到秋天场景

2016-08-31

mnist图片库

mnist图片库,包含42028张手写字体图片,可用来测试机器学习

2016-08-02

简单全连接神经网络python实现

简单的全连接神经网络代码的实现,使用python

2016-08-02

neural networks and deep learning

neural networks and deep learning完整版,对神经网络的学习有很大帮助

2016-08-02

welsh颜色迁移

welsh经典算法实现C++代码

2016-08-01

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除