何时使用tensorflow及它所面临的挑战

何时使用tensorflow

·研究、开发和迭代新的机器学习架构。

由于TensorFlow极为灵活,因此在构建新颖的、测试较少的模型时非常有用。而使用某些库时,用户只能获取对实现原型有帮助的具有较强刚性的预建模型,而无法对其进行修改。

将模型从训练直接切换到部署。

如前所述,TensorFlow Serving使用户可实现训练到部署的快速切换。因此,在创建依赖于机器学习模型的产品时,使用TensorFlow便可实现快速迭代。如果你的团队需要保持较快的开发进度,或者你只是没有用C++、Java等语言重新实现某个模型的资源,TensorFlow可赋予你的团队快速实现产品的能力。

·实现已有的复杂架构。

一旦用户掌握了如何阅读可视化的计算图,并使用TensorFlow来进行构建,他们便有能力用TensorFlow实现最新的研究文献中所描述的模型。在构建未来的模型,或甚至在对用户的当前模型进行严谨的改进时,这种能力可提供非常有价值的见解。

·大规模分布式模型。

在面对多种设备时,TensorFlow表现出卓越的向上可扩展性。它已经开始在谷歌内部的各个项目中逐步取代DistBelief。随着最近分布式运行时的发布,我们将看到越来越多的将TensorFlow运行于多台硬件服务器和云端虚拟机的用例。

·为移动/嵌入式系统创建和训练模型。

虽然TensorFlow主要关注向上的扩展(scalingup),对于向下的扩展(scalingdown),它同样有优异的表现。TensorFlow的灵活性之一体现在它可轻松扩展到计算性能不高的系统中。例如,它可在安卓设备以及像树莓派(RaspberryPi)这样的微型计算机中运行。TensorFlow代码库中包含了一个在安卓系统中运行预训练模型的例程。

使用TensorFlow所面临的挑战:

1.分布式支持尚不成熟

虽然分布式运行时已正式发布,但在TensorFlow中使用这种特性却并非想象中那样容易。在本书写作之时,为使用该特性,需手工定义每台设备的角色,这种工作既乏味又容易出错。由于它是一种全新的特性,因此可供学习的例程较少,想必未来的版本应当会有所改进。如前文所述,对Kubernetes的支持已进入开发流水线,但到目前为止,它仍然尚未完成。

2.实现定制代码的技巧性较强

虽然关于如何用TensorFlow创建用户自己的运算有一份官方指南可供参考,但要将定制的代码实现到TensorFlow中仍然颇费周折。然而,如果希望对主代码库做出贡献,谷歌开发团队会快速回答你的问题,并查看你所提交的代码,以便为吸纳你的工作成果进行准备。

3.某些特性仍然缺失

如果你是一名经验丰富的机器学习专家,并对其他框架具备深入的了解,你可能会发现一些自己喜欢的虽小但十分有用的特性尚未在TensorFlow中实现。通常,你想要的这种特性在TensorFlow中会有一些替代方案,但这可能无法阻止你的抱怨“为什么它还未得到本地支持?”

发布了46 篇原创文章 · 获赞 10 · 访问量 4409

猜你喜欢

转载自blog.csdn.net/GFDGFHSDS/article/details/104659328