网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
神经网络的工作经历了几个阶段:
- 神经网络的准备,包括架构的选择(神经元的组织方式)、拓扑结构(它们相对于彼此和外部世界的位置结构)、学习算法等。
- 将输入数据加载到神经网络中。
- 训练神经网络。这是一个非常重要的阶段,没有这个阶段神经网络就毫无用处。这就是所有魔术发生的地方:随着输入的输入数据量,神经网络接收有关预期结果的信息。将在神经网络的输出层得到的结果与预期的结果进行比较。如果它们不重合,则神经网络确定哪些神经元对最终值的影响更大,并调整与这些神经元连接的权重(所谓的误差反向传播算法)。这是一个非常简化的解释。我们建议阅读这篇文章深入研究神经网络训练。神经网络训练是一个非常耗费资源的过程,所以不是在智能手机上完成的。训练时间取决于任务、架构和输入数据量。
- 检查培训充分性。网络并不总是准确地学习其创建者希望它学习的内容。有一个案例,网络被训练来从照片中识别坦克的图像。但是由于所有的坦克都在同一个背景上,神经网络学会了识别这种类型的背景,而不是坦克。神经网络训练的质量必须在未参与其训练的示例上进行测试。
- 使用神经网络——开发人员将训练好的模型集成到应用程序中。
移动设备上神经网络的局限性
内存限制
市场上的大多数中端和低端移动设备都有 2 到 4 GB 的 RAM。通常,这个容量的 1/3 是由操作系统保留的。当 RAM 限制接近时,系统可以在运行时使用神经网络“杀死”应用程序。
应用程序的大小
复杂的深度神经网络通常重达数 GB。当将神经网络集成到移动软件中时,会有一些压缩,但仍然不足以舒适地工作。对开发人员的主要建议是在任何平台上尽可能减小应用程序的大小以改善用户体验。
运行
简单的神经网络通常几乎立即返回结果,适用于实时应用。然而,深度神经网络可能需要几十秒来处理一组输入数据。现代移动处理器还没有服务器处理器强大,因此在移动设备上处理结果可能需要几个小时。
要使用神经网络开发移动应用程序,您首先需要在服务器或 PC 上创建和训练神经网络,然后使用现成的框架在移动应用程序中实现它。
在多个设备上使用单个应用程序
例如,面部识别应用程序安装在用户的手机和平板电脑上。它无法将数据传输到其他设备,因此神经网络训练将在每个设备上单独进行。
Android 神经网络开发库概述
TensorFlow
TensorFlow 是 Google 的一个开源库,用于创建和训练深度神经网络。使用这个库,我们存储了一个神经网络并在应用程序中使用它。
该库可以训练和运行深度神经网络,以对手写数字进行分类、识别图像、嵌入单词和处理自然语言。它适用于 Ubuntu、macOS、Android、iOS 和 Windows。
为了更轻松地学习 TensorFlow,开发团队制作了更多教程并改进了入门指南。一些爱好者创建了自己的 TensorFlow 教程(包括InfoWorld)。您可以阅读几本关于 TensorFlow 的书籍或参加在线课程。
我们移动开发者应该看看TensorFlow Lite,这是一种适用于移动和嵌入式设备的轻量级 TensorFlow 解决方案。它允许您以低延迟和小二进制大小在设备上进行机器学习推理(但不是训练)。TensorFlow Lite 还支持使用 Android 神经网络 API 进行硬件加速。TensorFlow Lite 模型足够紧凑,可以在移动设备上运行,并且可以离线使用。
TensorFlow Lite 在 Android 和 iOS 设备上运行相当小的神经网络模型,即使它们被禁用。
TensorFlow Lite 背后的基本思想是训练一个 TensorFlow 模型并将其转换为 TensorFlow Lite 格式。然后可以在移动应用程序中使用转换后的文件。
TensorFlow Lite 由两个主要组件组成:
- TensorFlow Lite 解释器——在手机、嵌入式 Linux 设备和微控制器上运行特别优化的模型。
- TensorFlow Lite 转换器- 将 TensorFlow 模型转换为解释器使用的有效形式,并可以进行优化以提高性能和二进制文件大小。TensorFlow Lite 旨在简化移动设备本身的机器学习,而不是从服务器来回发送数据。对于开发人员而言,设备上的机器学习具有以下优势:
- 响应时间:请求不发送到服务器,而是在设备上处理
- 隐私:数据不会离开设备
- 不需要互联网连接
- 设备消耗更少的能量,因为它不向服务器发送请求
Firebase 机器学习套件
TensorFlow Lite 使在应用程序中实现和使用神经网络变得更加容易。然而,开发和训练模型仍然需要大量的时间和精力。为了让开发人员的生活更轻松,创建了 Firebase ML Kit 库。
该库在具有最少代码的应用程序中使用已经训练过的深度神经网络。提供的大多数模型都可以在本地和 Google Cloud 上使用。开发人员可以将模型用于计算机视觉(字符识别、条形码扫描、物体检测)。图书馆很受欢迎。例如,它用于:
- Yandex.Money(俄罗斯电子商务系统)识别二维码;
- FitNow,一种健身应用程序,可识别食品标签中的文本以计算卡路里;
- TutboTax,一种识别文件条形码的支付应用程序。
机器学习套件还具有:
- 书面文本的语言检测;
- 翻译设备上的文本;
- 智能消息响应(根据整个对话生成回复语句)。
除了开箱即用的方法外,还支持自定义模型。
重要的是您不需要为此使用任何服务、API 或后端。一切都可以直接在设备上完成——不加载用户流量,开发人员无需在没有互联网连接的情况下处理错误。此外,它在设备上的运行速度更快。缺点是功耗增加。
开发者不需要每次更新后都发布应用,因为 ML Kit 会在模型上线时动态更新模型。
ML Kit 团队决定投资模型压缩。他们正在试验一项功能,该功能允许您上传完整的 TensorFlow 模型以及训练数据,并获得压缩的 TensorFlow Lite 模型作为回报。开发人员正在寻找合作伙伴来试用该技术并从他们那里获得反馈。如果您有兴趣,请在此处注册。
由于此库可通过 Firebase 获得,因此您还可以利用该平台上的其他服务。例如,远程配置和A/B 测试使试验多个用户模型成为可能。如果您已经将经过训练的神经网络加载到您的应用程序中,您可以添加另一个而无需重新发布以在它们之间切换或一次使用两个以进行实验——用户不会注意到。
移动开发中使用神经网络的问题
开发使用神经网络的 Android 应用程序对于移动开发人员来说仍然是一个挑战。由于输入信息可能包含数百万个元素,因此训练神经网络可能需要数周或数月的时间。对于许多智能手机来说,如此严重的工作量仍然遥不可及。
如果出现以下情况,请检查您是否无法避免在移动应用中使用神经网络:
深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上鸿蒙开发知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
正体系化!**
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新