利用CRNN来识别图片中的文字(二)tensorflow中ctc有关函数详解

利用CRNN来识别图片中的文字(二)tensorflow中ctc有关函数详解,第1张

定义一个稀疏tensor。

将一个稀疏tensor转换成稠密tensor。

计算ctc_loss。

主要参数1:labels: int32 SparseTensor 是数据的真实标签,一般是先用sparse_placeholder(),然后在session中feed训练数据batch_y。batch_y为 SparseTensor 利用sparse_tuple_from(y)函数计算得到。

sparse_tuple_from(y)函数的输入是在train_y中随机选择大小为 batch_size 的数据,输出是一个(indices, values, shape)形式的三元组。

主要参数2:inputs:是三维 float Tensor logits是网络向前传播inference计算的结果。形状为[max_time_step, batch_size, num_classes]这里的num_classes是中文字典的大小,及992个汉字加1个空白,所以num_classes=993。输入图像经过卷积之后的大小为[batch_size, 11, 1, 512],max_time_step=512,是通道数,可以看作是512个特征序列。

主要参数3:sequence_length:一维 int32 向量注意是向量,不是 Tensor !!!长度为batch_size(批处理大小),值为max_len(ctc的最大输出长度,这个长度是自己定义的!合理即可!)的可以按照下面的方式定义。

占位符。在session中feed训练数据。

Google 开源了其第二代深度学习技术 TensorFlow——被使用在 Google

搜索、图像识别以及邮箱的深度学习框架。这在相关媒体圈、工程师圈、人工智能公司、人工智能研究团队里有了一些讨论。比较有趣的是,微软亚洲研究院立刻向

媒体发邮件表示,我们发布了开源分布式机器学习工具包(DMTK)。

对于大众来说,这件事让人

“困惑”。从 “深度学习” 到 “分布式系统”,太多概念大众一知半解,现今给出的资料又让人难以理解。而对于 “Google 开源

TensorFlow” 这一事件,各个公司、团队、学术权威也是众说纷纭。因此,出门问问为大家 “破雾”,并讲一讲这次开源意味着什么。

什么是深度学习?

度学习系统是什么?深度学习理论于 2006年 被提出,它通过模拟 “人脑的神经网络”

来解释图像、声音和文本等数据。但是目前的计算机还达不到模拟人脑数量庞大的神经元(千亿级),因此便有了用到成千上万大型计算机(计算平台集群)来吸收

数据对其进行自动分类的 “分布式深度学习系统”。

TensorFlow 的起源和此次开源事件

Google

将自家研发的深度学习系统命名为 “DistBelief”,它使得 Google

能够同时处理成千上万台大型计算机的数据,构建更大型的神经网络和大规模训练。Google

的搜索、图像识别及邮箱等均采用了该技术。一般情况下,深度学习系统都需要先设定好 feature(特征),再学习如何分辨。但

Google DistBelief 神奇的地方在于,“Google Brain” 开发团队 “XLab” 曾用它在未事先获取 “猫的特征描述”

信息的情况下,从大量 YouTube 视频中区分出了哪些是猫的视频。这意味着深度学习系统 “DistBelief” 自行总结出了猫的

feature(特征)!虽然这个案例的识别范围、识别率有待提高(817%),但作为人工智能最经典案例之一,为人工智能翻开了新的篇章。而 “猫”

的事件,也让曾经的 Google Brain 开发团队 “XLab” 的核心人员、现在被李彦宏挖到百度的吴恩达得到了

“Google Brain” 之父的美誉。不过,时代总是进步,而 “DistBelief” 有缺陷。

Google

称,虽然 DistBelief 非常成功,但它仅仅以神经网络为目的、十分局限,而且很难进行配置。另外,DistBelief 牢牢绑定在

Google 的内部基础设施上,几乎不可能将代码与外界共享。因此,本文的主角,Google 的第二代深度学习系统 “TensorFlow”

横空出世了。

Google 表示,TensorFlow

在设计上尤其针对克服 DistBelief 的短板,灵活、更通用、易使用、更快,而且完全开源。TensorFlow

可以被架设在智能手机这样小的设备上,甚至仅一块电路板上,更灵活; TensorFlow

可以被使用在很多计算平台,无论是智能手机还是大型计算机、单个 CPU / GPU 计算机还是成百上千 GPU 卡组成的分布式系统,ARM 的还是

X86 的构架,更通用;TensorFlow 支持多种编程语言,提供了很多深度学习模型库,易使用;在很多指标上,TensorFlow 要比

DistBelief 要快一倍,更快。但是,学术界和工程界的一些朋友并不喜欢这个 “刚刚闯入” 开源界的 “小伙子”,判了它 “意义不大”

的死刑。“TensorFlow” 之所以 “开源” 却不讨好,是因为 TensorFlow 不是第一个被开源的深度学习系统,并且目前只开源了

“单机版”,而非能够识别猫的 “分布式版本”。除了并非第一以及只开源了单机版代码这两点外,Google 开源 TensorFlow

这件事最被人诟病的地方在于,在 “用事实”、“用数据” 说话的学术界、工程界,Google 并未用 “数据对比” 证明 TensorFlow 的

“灵活、更通用、易使用”。

对于 TensorFlow,出门问问的看法是,TensorFlow 对学术界意义不大,但是对工程界意义挺大。

TensorFlow 对工程界有意义:其它开源工具虽然众多 但对工程界很难有效使用

Google

这次开源的 TensorFlow 是一种人工智能(更具体的说是深度学习)编程语言或计算框架,学术界从来都不缺少类似的开源工具,尤其是

“单机版工具包” 有很多。但是学术界的工具往往更多专注在核心算法上,在系统和工程方面比较欠缺,工业界很难直接有效的使用,而 Google 的

TensorFlow 在架构设计,跨平台可移植性,算法可扩展性等等偏工程方面会做的比较好。所以,TensorFlow

对学术界的帮助比较小,但对工业界的帮助有很大潜在可能性。比如语音识别、自然语言理解、计算机视觉、广告等等都可以应用这种深度学习算法,Google

也因为深度学习系统的应用使得 Google 语音识别水平提高 25%。

有意义归有意义,意义的大小

是另一回事了。在这个信息交流频繁的时代,没有公司能随便制造一个具有超大意义的事件或者跨时代的黑科技产品。对于工程界,TensorFlow

有意义但又不是神乎其神的东西,尤其是 Google 目前开源的 “单机版” 的 TensorFlow

意义要小一些。因为在工程界里,若要完成一整件事,如识别语音,TensorFlow

这种通用深度学习框架的存在更多是锦上添花,而非决定根本。比如说在一个可以应用的语音识别系统里, 除了深度学习算法外,还有很多工作是专业领域相关的

算法以及海量数据收集和工程系统架构的搭建。

其实,对于中国来说,TensorFlow

还有一个意义。在人工智能大潮下许多人和公司想入局,但大都没有能力理解并开发一个与国际同步的深度学习系统,而 TensorFlow

的存在会大大降低深度学习在各个行业中的应用难度。至于弄懂 TensorFlow 要花费大量时间的问题,就像很多公司用 Linux 或者

hadoop(一种分布式系统基础架构)但很少有公司弄懂了所有源代码一样,可以把 TensorFlow

当成一个黑盒,先快速用起来,之后再根据数据和专业领域知识来调整。

总的来说,如果 Google 按照其所说的那样,在未来完全开源 TensorFlow——包括其 “分布式版本”,那么 TensorFlow 对工程界的影响会更明显些——尤其对中国创业公司来说。

基本使用

使用 TensorFlow, 你必须明白 TensorFlow:

使用图 (graph) 来表示计算任务

在被称之为 会话 (Session) 的上下文 (context) 中执行图

使用 tensor 表示数据

通过 变量 (Variable) 维护状态

使用 feed 和 fetch 可以为任意的 *** 作(arbitrary operation) 赋值或者从其中获取数据

综述

TensorFlow 是一个编程系统, 使用图来表示计算任务 图中的节点被称之为 op

(operation 的缩写) 一个 op 获得 0 个或多个 Tensor, 执行计算,

产生 0 个或多个 Tensor 每个 Tensor 是一个类型化的多维数组

例如, 你可以将一小组图像集表示为一个四维浮点数数组,

这四个维度分别是 [batch, height, width, channels]

一个 TensorFlow 图描述了计算的过程 为了进行计算, 图必须在 会话 里被启动

会话 将图的 op 分发到诸如 CPU 或 GPU 之类的 设备 上, 同时提供执行 op 的方法

这些方法执行后, 将产生的 tensor 返回 在 Python 语言中, 返回的 tensor 是

numpy ndarray 对象; 在 C 和 C++ 语言中, 返回的 tensor 是

tensorflow::Tensor 实例

以上就是关于利用CRNN来识别图片中的文字(二)tensorflow中ctc有关函数详解全部的内容,包括:利用CRNN来识别图片中的文字(二)tensorflow中ctc有关函数详解、谷歌开源了TensorFlow,世界就要马上被改变了吗、如何用TensorFlow构建RNN等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9303325.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-27
下一篇2023-04-27

发表评论

登录后才能评论

评论列表(0条)

    保存