0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

软件工程师和数据科学家一起工作时,会擦出什么火花呢?

电子工程师 来源:lq 2019-01-06 11:32 次阅读

软件工程师和数据科学家一起工作时,会擦出什么火花呢?

作为Java / Kotlin开发人员,一位名叫Ben Danial的小哥为我们讲述了他与数据科学家合作的有趣经历。

在一年中,这位小哥从零开始学习机器学习,和数据科学家不断交流合作,一起码出了一个机器学习模型的原型,并成功把这个模型做上线。真是成就满满呢!

前情提要

大家好,我叫Ben Daniel,是一名安卓工程师。2017年末,我开始对机器学习领域产生兴趣。机器学习这个领域充满了有趣的挑战,因此也就需要大量的学习。今天,我就给大家讲述我和我司数据科学家一起攻克机器学习难题的经历。

我还记得,我曾试图解决我们的某个应用程序中出现的图像分类问题。我们需要根据一组规则区分有效和无效图像。于是我从深度学习领域中修改了dl4j这个例子,并试图用它来处理分类任务。虽然结果不够理想,但是我的心态还不错。毕竟第一次尝试嘛。

Dl4j例子链接:

https://github.com/deeplearning4j/dl4j-examples/blob/master/dl4j-examples/src/main/java/org/deeplearning4j/examples/convolution/AnimalsClassification.java

由于精度和最终模型的大小不符,我使用dl4j代码的方法是不可取的。面向移动设备,我们需要一个文件大小紧凑的模型,很遗憾,这个功能无法实现。

数据科学家来啦

正巧,这个时候,我们聘请了一位数据科学家,他带来了许多有趣的经验,也教会我们很多。我逐渐发现,大多数机器学习问题都可以通过Python解决,而且Python社区中已经有了对机器学习的巨大支持。虽然不太情愿,但我还是开始了Python的学习。

我从小型的机器学习课程开始学起。与此同时,我的其他团队成员也很感兴趣,并一起加入了学习的大军。新入职的数据科学家向我们介绍了Jupyter notebook和云机器学习引擎。我们通过使用花卉数据集示例尝试图像分类,并很快沉迷其中。

在团队中的每个人都接受了培训和模型的基础知识后,我们开始处理文章开始提到的遗留问题。作为一名团队成员,我主要专注于两项任务:图像分类问题和图像分割问题。之后,这两个问题都被我们用卷积神经网络(CNN)解决了。

准备训练数据真心难

这两项任务(图像分类问题和图像分割问题)都需要大量的训练数据。我有两个消息——好消息是我们的确有很多数据。坏消息是它们要么是未分类要么是未注释。我终于明白了机器学习专家们所说的,机器学习项目中大部分时间将用来准备训练数据而不是训练模型本身。

对于图像分类分类问题,我们需要将数十万个图像排列成不同的类。这是一项繁琐的工作。我不得不调用我的Java Swing技能,来构建使这项任务更容易的GUI,但总的来说,标记数据这个任务真的很单调,很无聊。

分割问题就要复杂一些了。我们很幸运地发现了一些擅长分割的模型,但不幸的是,这些模型太占内存了。我们还希望该模型能够在规格非常低的安卓设备上运行。这时,数据科学家建议我们使用庞大的模型来生成数据,用以构建我们自己的移动网络

训练

我们最终切换到了AWS Deep Learning AMI。训练图像分割模型的过程完全由我们的数据科学家处理,我只需要站在他身边,做笔记嘻嘻:)。

(其实我不在记笔记,哈哈哈哈哈哈哈哈)

训练这个模型是一项计算密集型任务,需要足够GPURAM。我们便采用了GPU和RAM,因此很快就完成了模型训练。如果不是这样的话,我们可能要花费数月来训练这个模型。

我负责了图像分类模型的训练。不过,我并没有在云上训练,而是只在我的Macbook pro上训练。这是因为,我只是训练神经网络的最后一层,而不是我们为分割模型所做的全网络训练。

顺利完成!

两种模型经过严格的测试后,都成功进入了我们的产品线。在这一步,团队成员的任务是构建Java wrapper库。这样一来,我们就可以把模型繁复的细节隐藏起来。在使用时,我们只需输入图片,这个wrapper库就会输出一个概率 张量,也就是模型在单个图像上预测的结果数组。我也参与了这一过程,因为我之前的一些写码经验有用武之地。

人生处处是挑战

“挑战让生活变得有趣,克服挑战则让生活变得有意义”。

在这个项目中,我面临的最大挑战是尝试使用Bazel从源代码构建用于32位系统的Tensorflow Java库。整个过程实在是跌跌撞撞。

我也遇到过其他挑战,比如,将Python解决方案转换为Java。由于Python已经内置了对数据科学任务的支持,因此Python中的代码感觉更加简洁。每次在尝试逐字翻译命令时,我都会抓耳挠腮。比如,缩放2D阵列并将其作为透明层添加到图像中这一步就异常艰难。不过我们最终把这事儿搞定了!

现在我们上线的模型表现很好,但是当它们产生错误的结果时,那些错误的结果是荒谬无比的。

它让我想起了我之前读过的一句话:

“...如果没有源源不断的新数据,模型质量会迅速降低。这是著名的概念漂移(concept shift),这意味着,随着时间的推移,静态机器学习模型提供的预测变得不那么准确,并且不太有用。在某些情况下,甚至可能在几天内发生。 - David Talby

因此,我们必须不断改进模型,并且永远得不到一个一劳永逸的模型。其实还挺有趣的。

因为我本人主要关注移动开发,所以我甚至不确定自己有资格被称为机器学习的新手。然而,通过与数据科学家的合作,我在今年成功上线了一个机器学习模型。回想起来,相当激动呢!

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 神经网络
    +关注

    关注

    42

    文章

    4765

    浏览量

    100611
  • 机器学习
    +关注

    关注

    66

    文章

    8387

    浏览量

    132480
  • 数据科学
    +关注

    关注

    0

    文章

    165

    浏览量

    10048

原文标题:业界 | 当软件工程师第一次与数据科学家一起工作……

文章出处:【微信号:BigDataDigest,微信公众号:大数据文摘】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    使用MATLAB培养医疗人工智能领导者和增强工程课程

    全球各地的高校都在使用 MATLAB 和 Simulink 开展教学与科研,帮助未来的工程师科学家掌握未来世界工程项目与科学研究所要求的重要能力。让我们
    的头像 发表于 10-31 16:37 218次阅读

    FPGA算法工程师、逻辑工程师、原型验证工程师有什么区别?

    逻辑工程师和 FPGA 原型验证工程师工作重点和职责上存在定的区别: FPGA 算法工程师: 主要关注算法的设计和优化,以在 FPGA
    发表于 09-23 18:26

    新华社:突破性成果!祝贺我国科学家成功研发这传感器!

    6月25日,新华社以《突破性成果!祝贺我国科学家》为标题,报道了由我国科学家研发的传感器成果。 我国科学家研发高通道神经探针实现猕猴全脑尺度神经活动监测 神经探针是种用来记录神经活动
    的头像 发表于 06-27 18:03 442次阅读
    新华社:突破性成果!祝贺我国<b class='flag-5'>科学家</b>成功研发这<b class='flag-5'>一</b>传感器!

    嵌入式软件工程师如何提升自己?

    嵌入式软件工程师如何提升自己? 作为名嵌入式软件工程师,在这个充满机遇和挑战的领域里,如何提升自己显得非常重要,它决定了你未来的发展方向和成就。接下来,我们一起探讨
    发表于 06-12 11:20

    索尼诚邀软件工程师参与PS免费手游平台设计

    据悉,近日,澳大利亚知名媒体TweakTown发现,索尼互动娱乐正在为其旗下的PlayStation Studios Mobile招募名资深的软件工程师,负责设计PlayStation的免费手机游戏平台。
    的头像 发表于 05-23 17:08 707次阅读

    嵌入式软件工程师和硬件工程师的区别?

    和通信协议,以及熟练掌握种或多种编程语言和开发工具。 主要负责的任务和领域 嵌入式软件工程师工作涉及到各种任务,主要包括: * 系统设计:包括确定系统功能、分配资源、优化性能等。 * 软件
    发表于 05-16 11:00

    本源量子参与的国家重点研发计划青年科学家项目启动顺利召开

    2024年4月23日,国家重点研发计划“先进计算与新兴软件”重点专项“面向复杂物理系统求解的量子科学计算算法、软件、应用与验证”青年科学家项目启动
    的头像 发表于 05-11 08:22 602次阅读
    本源量子参与的国家重点研发计划青年<b class='flag-5'>科学家</b>项目启动<b class='flag-5'>会</b>顺利召开

    使用FatFS和FreeRTOS一起工作时,发现运行段时间后,FATFS就会出现m_sync不成功的情况,为什么?

    程序流程是这样的:每1秒写7个字节,先m_write,再m_sync。 当使用FatFS和FreeRTOS一起工作时,发现运行段时间后,FATFS就会出现m_sync不成功的情况。 但不
    发表于 04-30 06:36

    Cognition发布首款AI软件工程师Devin

    据报道,Cognition公司今日公布了其首款人工智能软件工程师——Devin,掀起了打造软件模式变革的序幕。该产品在SWE-bench代码测验中展现出卓越表现,甚至超过了部分顶级人类工程师的水准。
    的头像 发表于 03-13 10:57 598次阅读

    谷歌DeepMind科学家欲建AI初创公司

    据知情人士透露,谷歌人工智能部门DeepMind的两名杰出科学家Laurent Sifre和Karl Tuyls正在与投资者商讨在巴黎成立家新的人工智能初创公司的事宜。
    的头像 发表于 01-22 14:41 472次阅读

    飞腾首席科学家窦强荣获 “国家卓越工程师” 称号

         飞腾首席科学家窦强荣获 “国家卓越工程师” 称号 1月19日上午,首届 “国家工程师奖” 表彰大会在北京人民大会堂隆重举行。81 名个人被授予 “国家卓越工程师” 称号,50
    的头像 发表于 01-19 19:22 1674次阅读
    飞腾首席<b class='flag-5'>科学家</b>窦强荣获 “国家卓越<b class='flag-5'>工程师</b>” 称号

    嵌入式软件工程师常用的

    最近我换工作了,看见不同嵌入式软件工程师用的平台都不样,所以我整理了下。PlatformIO:多平台支持:PlatformIO支持多种嵌入式平台,包括Arduino、ESP8266
    的头像 发表于 12-24 08:00 638次阅读
    嵌入式<b class='flag-5'>软件工程师</b>常用的

    释放积极信号!“国家工程师奖”首次开评

    近期,国家卓越工程师及卓越工程师团队拟定表彰名单颁布,共包含83位获选为国家卓越工程师、50家团队荣获国家卓越工程师团队称号。从本年度,首
    的头像 发表于 12-11 11:02 640次阅读

    嵌入式硬件和软件哪个好?

    嵌入式硬件和软件哪个好? 嵌入式软硬件工程师哪个更有前途呢?一起来看看。 嵌入式是分为软硬件工程师的,首先我们先来看看嵌入式硬件工程师吧!
    发表于 12-05 15:17