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

    文章

    4572

    浏览量

    98716
  • 机器学习
    +关注

    关注

    66

    文章

    8116

    浏览量

    130546
  • 数据科学
    +关注

    关注

    0

    文章

    163

    浏览量

    9981

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

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

收藏 人收藏

    评论

    相关推荐

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

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

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

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

    嵌入式软件工程师常用的

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

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

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

    FPGA工程师需要具备哪些技能?

    的状态机以及高级逻辑电路。 FPGA工程师需要熟练掌握HDL语言,并能够根据需要灵活使用这些语言。他们需要知道如何将各种逻辑电路和存储器组合在一起,以实现所需的功能。同时,FPGA工程师还需要
    发表于 11-09 11:03

    嵌入式软件好还是硬件好?

    嵌入式软硬件工程师哪个更有前途呢?一起来看看。 嵌入式是分为软硬件工程师的,首先我们先来看看嵌入式硬件工程师吧! 嵌入式硬件开发工程师主要
    发表于 09-18 15:31

    华为辟谣3.2万名科学家移籍

    华为辟谣3.2万名科学家移籍 对于近期网络传言的华为3.2万名科学家移籍华为方面表示,造谣者毫无根据、无中生有。 华为辟谣3.2万名科学家移籍以及其他的一些网络传言,比如“华为孟晚舟宣布23万亿
    的头像 发表于 08-22 16:51 1001次阅读
    华为辟谣3.2万名<b class='flag-5'>科学家</b>移籍

    ARM CoreSight™片上系统SoC-600M技术参考手册

    本书是为以下读者撰写的: ·希望将酷睿思™SoC-600M整合到他们的设计中并从SoC产生实时指令和数据跟踪信息的硬件和软件工程师。 ·编写使用酷睿™SoC-600M的工具的软件工程师。 本书假定读者熟悉AMBA®Bus设计和J
    发表于 08-18 06:31

    如何让Lego Ev3机器人与BluPants一起工作

    电子发烧友网站提供《如何让Lego Ev3机器人与BluPants一起工作.zip》资料免费下载
    发表于 06-29 14:43 0次下载
    如何让Lego Ev3机器人与BluPants<b class='flag-5'>一起工作</b>

    踏歌智行创始人、首席科学家余贵珍教授登榜“2023科创家”

    “一群跨越了科学与商业边界的人”这是科创媒体36氪对科创企业家的定义。近日, 踏歌智行创始人、首席科学家余贵珍教授从全赛道中脱颖而出, 登榜首届“2023科创家”榜单。此次共有15位教授荣登榜单
    的头像 发表于 06-16 19:15 2360次阅读
    踏歌智行创始人、首席<b class='flag-5'>科学家</b>余贵珍教授登榜“2023科创家”

    是否有种方法可以使用Arduino的代码块IDE与ESP MCU一起工作

    你知道是否有种方法可以使用 Arduino 的代码块 IDE 与 ESP MCU 一起工作?Code Blocks 是个非常好的轻量级 IDE,已经适用于几乎所有的 Arduino 开发板。
    发表于 06-09 08:35

    怎样才能让Gmail与ESP8266草图一起工作?

    Gmail 现在需要 2 个因素和个唯的应用程序密码。我怎样才能让它与我的 8266 草图一起工作。如果我在草图中输入唯密码,它将无法连接到 gmail。
    发表于 06-01 08:44

    有没有人让ESPduino与RC522 RFID读写器一起工作

    有没有人让 ESPduino 与 RC522 RFID 读写器一起工作?我不知道是我的引脚连接不正确还是我的代码有问题,真的需要些帮助。如果你之前已经让它工作了,如果你可以发布你的引脚连接和
    发表于 05-31 06:14

    i.MX8M mini evk上的JTAG如何与openocd一起工作

    我已经将个 J-Link 调试器连接到 imx 8 迷你评估套件,我试图让它与 openocd 一起工作,但是 openocd 直在声明“gdb 端口已禁用”和“DAP 事务停止(等待)”,是否有任何特定的使用 JTAG 调
    发表于 05-12 08:43

    关于让NXP TPL嗅探器与Saleae逻辑分析器一起工作的任何提示?

    逻辑分析器)——结果不好。 我的问题: 关于让 NXP TPL 嗅探器与 Saleae 逻辑分析器一起工作的任何提示?
    发表于 05-09 08:33