用TensorFlow实现神经网络很难吗?看完这篇详解,「小白」也可秒懂!

本文介绍了如何使用TensorFlow实现神经网络,包括何时使用神经网络、理解图像数据、流行的深度学习库以及TensorFlow的工作原理。通过一个简单的图像识别任务,展示了如何在TensorFlow中构建和训练一个前馈多层感知器。文章强调了TensorFlow的直观性和灵活性,同时提及其在分布式计算和部署方面的优势,以及与其他库的比较。
摘要由CSDN通过智能技术生成

图:pixabay


原文来源:DZone

作者:Faizan Shaikh

「机器人圈」编译:嗯~阿童木呀、多啦A亮


「机器人圈」正式更名为「雷克世界」,后台回复「雷克世界」查看更多详情。


如果你一直在关注数据科学/机器学习等相关领域,那么你一定不会错过有关深度学习和神经网络的任何动态。组织正在寻找一些深谙深度学习技能的人,无论他们将深度学习的知识用于何处。从开启竞争到开源项目再到巨额奖金,人们正在试图尝尽一切办法来挖掘这个领域有限的人才资源。


如果你对深度学习的发展前景充满憧憬和期望,但还不曾开始迈进这个领域,那么,在这里我将助你开启旅程。


在本文中,我将介绍TensorFlow的相关知识。相信阅读本文后,你将能够了解神经网络的应用,并学会使用TensorFlow来解决现实生活中的问题。而在阅读本文之前,要求你能够了解神经网络的基础知识,并熟悉编程。尽管这篇文章中的代码是用Python编写的,但我会将重点放在概念上,并尽可能保持所谈论的内容与编程无关。


何时使用神经网络


众所周知,到目前为止,神经网络成为人们关注的焦点已有很长一段时间了。如果还不是很了解,点击链接,这里有有关神经网络和深度学习的更为详尽的阐述。(https://www.analyticsvidhya.com/blog/2016/10/an-introduction-to-implementing-neural-networks-using-tensorflow/?utm_source=dzone&utm_medium=social)其中,它的“更深度”版本已然在诸如图像识别、语音和自然语言处理等诸多领域取得了巨大的突破性进展。


而在神经网络的使用这有一个至关重要的问题出现了,那就是“什么时候应该使用神经网络?什么时候不应该使用神经网络呢”?现如今,这个领域俨然就是一座金矿,每天都会有许多“宝藏”破土而出,而如果想要成为这个“淘金热”的一部分,你必须注意几点:


•首先,神经网络需要清晰且翔实的数据(主要是大数据)进行训练。你可以试着将神经网络想象成一个孩子。在最初的时候,它首先要观察其父母的走路方式,然后,它试着自己走,一步一步地走下去,这个孩子就学会了如何去执行一项特定的任务。在这个过程中,它可能会跌倒几次,但经过几次失败的尝试之后,它就学会了如何走路。如果你不让它尝试着自己走,那么它可能永远也学不会如何走路。你为孩子提供的尝试机会越多,它就会越来越好。


•对于诸如图像处理这样的复杂问题,使用神经网络是一种需要很谨慎的行为。神经网络是隶属于一种称为表征学习算法(representation learning algorithms)的一类算法。这些算法将复杂问题分解成更为简单的形式,使其变得可以理解(或“可表征”)。其实你可以把它想象成是在你吞咽食物之前咀嚼食物的行为。而这对于传统算法(非表征学习)来说,将变得更加困难。


•当你认为有了适当的神经网络类型来解决问题时,殊不知每个问题都有自己的难点。而数据将决定你用以解决问题的方式。例如,如果是序列生成的问题,则选择循环神经网络是最为合适的,而如果它是一个和图像相关的问题,那么你可能就需要做些改变,采用卷积神经网络才是一个合适的选择。


•最后一点但也同样重要的是,硬件需求对运行深度神经网络模型来说是至关重要的。其实,神经网络很久以前就被“挖掘”出来了,但直到近年,它才开始“闪闪发光”,而这主要得益于计算资源的越来越好和越来越强大。如果你想要用这些网络来解决实际问题,建议你做好准备去购买一些高端硬件!


如何使用神经网络解决问题


神经网络是一种特殊类型的机器学习(ML)算法。因此,与每个ML算法一样,它遵循数据预处理,模型构建和模型评估的通用ML工作流。为了简明起见,我列出了一个如何处理神经网络问题的待办事项清单。


•检查神经网络是否提升了传统算法(参考上述章节中的检查列表)。


•做一项关于哪个神经网络架构最适合亟待解决问题的调查。


•通过你所选择的语言/库来定义神经网络架构。


•将数据转换为正确的格式,并将其分为若干批量。


•根据需要对数据进行预处理。


•添加数据以增加大小并做出更好的训练模型。


•将批量馈送到神经网络。


•训练、监测训练过程中的变化并验证数据集。


•对模型进行测试并保存以备将来使用。


对于这篇文章,我将重点介绍图像数据。在深入了解TensorFlow之前,需要首先对其有基本了解。


理解图像数据及用以解决问题的流行库


图像大部分以三维数组的形式排列,其中三维是指高度、宽度和颜色信号通道。例如,如果你在此刻拍摄个人电脑的屏幕截图,则首先将其转换成三维数组,然后将其压缩为PNG或JPG文件格式。


监管这些图像对于人类来说是很容易理解的,但对计算机来说就没有那么容易了。这种现象被称为语义鸿沟(semantic gap)。我们的大脑可以在几秒钟内看到图像,并对完整的图像加以了解。而另一方面,计算机则将图像视为一个数组。所以问题是,我们该如何将这个图像向机器加以解释。


在早期,人们试图将这种图像分解为像一个“模板”一样的机器 “可理解”的格式。例如,一张脸中总有一个特定的结构,它以某种形式在每个人身上保留下来,比如我眼睛和鼻子的位置,或者脸型。但是这种方法将会非常繁琐,因为当要识别的目标数量增加时,“模板”就不存在了。


到了2012年,深度神经网络架构赢得了ImageNet挑战赛,这是一个在从自然场景中识别目标领域的很有声望的挑战。后来在所有即将到来的ImageNet挑战中,神经网络都占据着主导地位,从而证明了其在解决图像问题的有效性。


那么人们通常会使用哪些库/语言来解决图像识别问题呢?最近的一项调查结果显示,大多数受欢迎的深度学习库都有一个Python接口,其次是Lua、Java和Matlab。下面是最受欢迎的库中的一些代表:


•Caffe(http://caffe.berkeleyvision.org/


•DeepLearning4j(https://deeplearning4j.org/


•TensorFlow(https://www.tensorflow.org/


•Theano(http://www.deeplearning.net/software/theano/


•Torch(http://torch.ch/

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值