深度学习
文章平均质量分 68
Keras深度学习
纯属个人记点笔记,方便需要用的时候查看。
展开
-
tensorflow/serving部署keras的h5模型服务
当我们使用keras训练好模型之后,下一步就是部署服务了,采用flask直接加载keras的h5模型,服务的并发性能会很低。如果为了追求高并发性能,就可以采用Nginx+gunicorn+gevent的方式来启动服务,这种方式服务虽然可以达到极高的并发性能,但却存在一个问题,也就是gunicorn的方式是启动了多个进程,每个进程都会加载一次模型,造成服务启动后所占用的内存很大,另外直接加载h5模型,整个进程随着使用过程中占用内存也会也逐步增大,这就是python存在了内存泄漏的问题。......原创 2022-08-03 15:48:56 · 1832 阅读 · 16 评论 -
国税局发票查验API接口文档说明
该接口通过RPA机器人技术进行查验,通过浏览器模拟的方式,使用UIpath、selenium、playwright等RPA自动化测试工具、结合人工智能图像识别技术制作而成,仅供个人方便查看自己的票,提高工作效率。原创 2021-11-15 10:00:01 · 766475 阅读 · 35 评论 -
国税局发票查验中英文验证码识别最新版,识别率99.9%
采用深度学习进行发票查验验证码模型的训练,在我电脑上模型训练的环境如下:显卡:RTX 2080TItensorflow-gpu:2.5.31 训练集和测试集的准备发票查验的验证码分为4种类型,分别为黑色、红色、黄色、蓝色,经过我的测试,采用4个模型的效果最好,每个模型对应识别一种类型的验证码。首先我们4种类型的验证码都准备10万张。00黑色类型的验证码:01红色类型的验证码:02黄色类型的验证码:03蓝色类型的验证码:验证码图像图像准备好后,对其进行标记,也就是对验证码重命名:原创 2022-05-13 13:45:15 · 836519 阅读 · 18 评论 -
中文OCR的汉字按常见度的划分
在OCR中,会需要自己制作中文字符的图像样本,因此需要了解各种常见度汉字的划分。常见的3500个汉字:'阿啊哎哀唉埃挨癌矮艾爱碍安氨俺岸按案暗昂凹熬傲奥澳八巴叭吧拔把坝爸罢霸白百柏摆败拜班般颁斑搬板版办半伴扮瓣邦帮膀傍棒包胞宝饱保堡报抱豹暴爆卑杯悲碑北贝备背倍被辈奔本崩逼鼻比彼笔币必毕闭辟碧蔽壁避臂边编蝙鞭扁便变遍辨辩标表别宾滨冰兵丙柄饼并病拨波玻剥播脖伯驳泊勃博搏膊薄卜补捕不布步部擦猜才材财裁采彩踩菜蔡参餐残蚕惨灿仓苍舱藏操曹槽草册侧测策层叉插查茶察差拆柴缠产阐颤昌长肠尝偿常厂场畅倡唱抄超巢朝潮吵炒车原创 2022-03-15 15:18:39 · 36277 阅读 · 0 评论 -
纯numpy实现多标签多分类进行验证码识别
在我之前的两篇博客中,讲解了使用纯numpy实现手写数字识别以及采用keras的多标签多分类进行验证码识别,建议阅读这篇文章之前提前看下另外两篇博客。卷积神经网络实现手写数字识别(纯numpy实现)Keras深度学习(6)-多标签多分类之验证码识别今天这篇博客将讲解使用纯numpy搭建多分类多标签算法来完成验证码识别任务。多标签多分类与单标签多分类的一个显著的区别是输出层激活函数采用sigmoid函数以及损失函数采用二元交叉熵。首先看激活函数sigmoid,sigmoid的数学公式为:根据原创 2022-03-08 16:23:32 · 33679 阅读 · 0 评论 -
卷积神经网络的可视化(基于keras)
在通常的认知中,神经网络的模型是一个“黑盒”,即模型学到的内容很难用人能够理解的方式来提取和表现,虽然对于某些类型的深度学习模型来说,这种表述部分正确,但对卷积神经网络来说绝对不是这样,卷积神经网络学到的表示非常适合可视化,很大程度上是因为它们是视觉概念的表示。到现在为止,人们开发了多种技术来对这些表示进行可视化和理解,这里介绍3种最容易理解也是最有效的方法。可视化卷积神经网络的中间输出(中间激活):有助于理解卷积神经网络连续的层如何对输入进行变换,也有助于初步了解卷积神经网络每个过滤器的含义。可视化原创 2022-02-16 17:14:36 · 40318 阅读 · 19 评论 -
keras深度学习之猫狗分类四(微调模型)
另一种广泛使用的模型复用方法是模型微调(fine-tuning),与特征提取互为补充。对于用于特征提取的冻结的模型基,微调是指将其顶部的几层“解冻”,并将这解冻的几层和新增加的部分(本例中是全连接分类器)联合训练。之所以叫作微调,是因为它只是略微调整了所复用模型中更加抽象的表示,以便让这些表示与手头的问题更加相关。前面说过,冻结 VGG16 的卷积基是为了能够在上面训练一个随机初始化的分类器。同理,只有上面的分类器已经训练好了,才能微调卷积基的顶部几层。如果分类器没有训练好,那么训练期间通过网络传播的误原创 2022-02-15 15:15:09 · 32277 阅读 · 0 评论 -
keras深度学习之猫狗分类三(特征提取)
想要将深度学习应用于小型图像数据集,一种常用且非常高效的方法是使用预训练网络。预训练网络(pretrained network)是一个保存好的网络,之前已在大型数据集(通常是大规模图像分类任务)上训练好。如果这个原始数据集足够大且足够通用,那么预训练网络学到的特征的空间层次结构可以有效地作为视觉世界的通用模型,因此这些特征可用于各种不同的计算机视觉问题,即使这些新问题涉及的类别和原始任务完全不同。举个例子,你在 ImageNet 上训练了一个网络(其类别主要是动物和日常用品),然后将这个训练好的网络应用于某原创 2022-02-15 14:20:29 · 33231 阅读 · 0 评论 -
keras深度学习之猫狗分类二(数据增强)
在上一篇博客中,讲述了对猫狗采用二分类方法进行模型训练,最终得到的模型在测试数据上的准确率为79%。在这里我们采用数据增强的方法进一步提高识别率。数据增强是从现有的训练样本中生成更多的训练数据,其方法是利用多种能够生成可信图像的随机变换来增加(augment)样本。其目标是,模型在训练时不会两次查看完全相同的图像。这让模型能够观察到数据的更多内容,从而具有更好的泛化能力。例如有如下一张图像:对这个狗的图像进行数据增强,代码如下:from tensorflow.keras.preprocessing原创 2022-02-14 16:48:42 · 34433 阅读 · 1 评论 -
keras深度学习之猫狗分类一
在计算机视觉图像分类中,在实践过程中会经常遇到样本数量很少的情况。很少的样本可能是几百张图像或者几万张图像,在小样本上如何训练一个泛化能力强的模型是一个很值得探讨的问题,中间有不少过程需要我们进行优化。在这里使用通用的猫狗样本进行二分类模型的训练,在训练的过程中来研究怎样采取一些措施提高模型预测的准确率。1 训练样本的下载猫狗的分类样本采用kaggle上的猫狗样本,网址为:https://www.kaggle.com/chetankv/dogs-cats-images如果从官网上不方便下载该样本集原创 2022-02-11 17:32:49 · 36414 阅读 · 1 评论 -
Keras深度学习(6)-多标签多分类之验证码识别
在针对一个网站的RPA技术中,验证码识别也是一个很常见的需要解决的问题。如下图所示的验证码:前面在我的博客中所讲的内容是单标签多分类,例如一个手写数字图片,分出10类,得到这个图片表示的1个字符信息,而验证码一般是多个字符,每一个字符均有多个类别,因此验证码识别的问题就属于多标签多分类问题,在这里不能用之前识别手写数字的方法来进行验证码识别。本文的开发环境如下:tensorflow 2.5.0本文所用的训练样本如下:下载链接1 多标签多分类之验证码识别模型的训练多标签多分类的处理要点是验证码原创 2022-01-29 17:00:00 · 35232 阅读 · 3 评论 -
Keras深度学习(5)-卷积神经网络识别手写数字
在前面的博客中,曾经介绍了以全连接网络识别手写数字,这里以卷积神经网络识别手写数字。1 卷积神经网络模型的训练训练代码如下:from tensorflow.keras.datasets import mnistfrom tensorflow.keras import modelsfrom tensorflow.keras import layersfrom tensorflow.keras import optimizersfrom tensorflow.keras import losses原创 2022-01-28 18:15:02 · 33050 阅读 · 0 评论 -
Keras深度学习(4)-回归问题之预测房价
在深度学习的任务中,回归问题也是一个常见的任务。本文将要预测 20 世纪 70 年代中期波士顿郊区房屋价格的中位数,已知当时郊区的一些数据点,比如犯罪率、当地房产税率等。本节用到的数据集与前面两个例子有一个有趣的区别。它包含的数据点相对较少,只有 506 个,分为 404 个训练样本和 102 个测试样本。输入数据的每个特征(比如犯罪率)都有不同的取值范围。例如,有些特性是比例,取值范围为 0~1;有的取值范围为 1~12;还有的取值范围为 0~100,等等。1 回归问题模型的训练回归问题有以下几个要原创 2022-01-28 16:15:25 · 37033 阅读 · 3 评论 -
keras深度学习(3)-单标签多分类问题之新闻分类
将路透社新闻划分为 46 个互斥的主题,因为有多个类别,所以这是多分类(multiclass classification)问题的一个例子。因为每个数据点只能划分到一个类别,所以更具体地说,这是单标签、多分类(single-label, multiclass classification)问题的一个例子。如果每个数据点可以划分到多个类别(主题),那它就是一个多标签、多分类(multilabel, multiclass classification)问题。1 单标签多分类问题模型的训练单标签多分类问题有以原创 2022-01-27 18:28:23 · 34002 阅读 · 0 评论 -
Keras深度学习(2)-二分类问题之电影评论分类
二分类问题可能是应用最广泛的机器学习问题。在这个例子中,你将学习根据电影评论的文字内容将其划分为正面或负面。本节使用 IMDB 数据集,它包含来自互联网电影数据库(IMDB)的 50 000 条严重两极分化的评论。数据集被分为用于训练的 25 000 条评论与用于测试的 25 000 条评论,训练集和测试集都包含 50% 的正面评论和 50% 的负面评论。1 二分类问题模型的训练二分类问题有以下几个要点:隐藏层激活函数使用Relu输出层的神经元只有1个,并且输出层的激活函数为sigmoid损失原创 2022-01-27 16:21:03 · 34614 阅读 · 0 评论 -
Keras深度学习(1)-全连接手写数字的识别
在各种主流的深度学习框架中,手写数字的识别均作为第一个入门教程,同样,在开始学习Keras这个近些年非常流行的深度学习框架时,也用全连接手写数字识别作为入门的第一个例子。为了紧跟时代潮流,在之后我的所有博客中,均使用TensorFlow2以上的版本,而在TensorFlow2中的版本,Keras已经集成到tf中去了,可见谷歌也在逐步放弃TensorFlow1中的模型搭建方法,转而使用Keras来进行模型训练。因此可见,Keras的优势,也希望大家从一开始就学习Keras。使用的TensorFlow版本:原创 2022-01-25 15:10:51 · 32700 阅读 · 0 评论 -
卷积层CNN在观察什么?
我们通过对CNN滤波器W1进行可视化,来观察卷积层到底在观察什么?卷积层的可视化函数如下:#可视化函数def filter_show(filters, nx=8, margin=3, scale=10): FN, C, FH, FW = filters.shape ny = int(np.ceil(FN / nx)) fig = plt.figure() fig.subplots_adjust(left=0, right=1, bottom=0, top=1, hsp原创 2022-01-19 17:40:37 · 34255 阅读 · 0 评论 -
卷积神经网络实现手写数字识别(纯numpy实现)
前面讲解了使用纯numpy实现数值微分和误差反向传播法的手写数字识别,这两种网络都是使用全连接层的结构。全连接层存在什么问题呢?那就是数据的形状被“忽视”了。比如,输入数据是图像时,图像通常是高、长、通道方向上的3维形状。但是,向全连接层输入时,需要将3维数据拉平为1维数据。实际上,前面提到的使用了MNIST数据集的例子中,输入图像就是1通道、高28像素、长28像素的(1, 28, 28)形状,但却被排成1列,以784个数据的形式输入到最开始的Affine层。图像是3维形状,这个形状中应该含有重要的空间信原创 2022-01-19 17:16:19 · 39741 阅读 · 8 评论 -
误差反向传播法实现手写数字识别(纯numpy实现)
使用纯Python语言,仅仅只用到numpy这个模块,利用误差反向传播法实现手写数字识别。代码如下:from audioop import reverseimport numpy as npfrom collections import OrderedDictfrom dataset.mnist import load_mnistimport matplotlib.pylab as plt'''OrderedDict:有序字典,有序指的是它可以记住向字典里添加元素的顺序'''def原创 2022-01-17 11:29:52 · 8220 阅读 · 0 评论 -
数值微分法实现手写数字识别(纯numpy实现)
手写数字识别作为深度学习入门经典的识别案例,各种深度学习框架都有这个例子的实现方法。我这里将不用任何深度学习现有框架,例如TensorFlow、Keras、pytorch,直接使用Python语言的numpy实现各种激活函数、损失函数、梯度下降的方法。程序分为两部分,首先是手写数字数据的准备,直接使用如下mnist.py文件中的方法load_minist即可。文件代码如下:# coding: utf-8try: import urllib.requestexcept ImportError:原创 2022-01-13 17:03:03 · 32807 阅读 · 0 评论 -
win10下RTX 2080ti安装cuda10.0和cudnn7.6.5
1 安装显卡驱动在NVIDIA官网上下载显卡驱动,并进行安装NVIDIA官网下载页面2 安装cuda10.0在cuda历史版本列表中下载cuda10.0cuda10.0下载链接下载完成后安装cuda,采用默认安装即可。3 下载并配置cudnncudnn并不是一个安装程序,而是一个C++运行库,包含头文件、lib文件、dll文件。下载完成后需要把相应文件复制到cuda的目录下。在cudnn页面下载下载cudnn时需要有NVIDIA的账号,没有可以注册一个。登录了账号后进入cu原创 2020-12-01 11:36:20 · 20432 阅读 · 0 评论 -
win10下使用bazel从源码编译TensorFlow1.15.3的pip安装包(CPU版本支持AVX2指令集)
为什么要自己编译Python版本的TensorFlow包了?很多人会有疑惑,因为Python的模块直接通过pip install命令就可以在线下载安装了,没有必要自己编译。不过通过这种方式安装的Python包是默认不支持AVX2指令集的,这个在运行Python程序从下面的提示就可以看出来。Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2自己编译可以生成一个支持AVX2指令集的P原创 2020-11-27 14:00:23 · 17588 阅读 · 1 评论 -
win10下使用bazel从源码编译TensorFlow1.15.3的C++动态库(CPU版本支持AVX2指令集)
1 安装msys2msys2是一个在Windows上的Linux虚拟环境,在Linux上写的程序,可以使用msys2编译为Windows上的exe或者dll。在msys2官网上下载msys2程序:下载链接。下载完成后进行安装,安装成功后将安装目录C:\msys64和安装目录下的usr/bin目录C:\msys64\usr\bin添加到系统环境变量path中以管理权限打开cmd,依次安装msys2的一些环境包pacman -Syupacman -S gitpacman -S patch un原创 2020-11-27 09:42:47 · 20110 阅读 · 40 评论 -
flask搭建Keras服务出现的问题解决办法
当使用Keras训练好了一个识别模型后,如果采用线上部署为服务,一般情况下采用flask或者Django进行服务搭建。原创 2020-09-28 14:04:35 · 17451 阅读 · 8 评论 -
使用vs2015调用TensorFlow官网提供的c语言动态库
我们知道,TensorFlow官网是提供了C语言的函数库,Windows版本、Linux版本的动态库都有提供,所有我们不必自己去编译TensorFlow源码来生成动态库。TensorFlow官网C语言库打开TensorFlow官网链接,页面如下在这个页面下部有各种版本的下载链接根据自己的需要,我下载Windows版本CPU版的dll库。下载完成后我们解压这个压缩包得到C语言库的头文件......原创 2019-11-12 14:23:54 · 17658 阅读 · 0 评论 -
深度学习入门之感知机
感知机可以对传入的信号通过一定的计算只输出两种信号值0和1,感知机的公式如下:感知机一共有4种,与门、与非门、或门、异或门其中与门、与非门、或门是线性空间,异或门是非线性空间。x1和x2的值0,00,11,01,1与门0001与非门1110或门0111异或门01101 与门的实现import numpy a......原创 2019-10-12 15:13:50 · 16916 阅读 · 0 评论