软件工程师成长为架构师必备的十项技能

Posted qwangxiao

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了软件工程师成长为架构师必备的十项技能相关的知识,希望对你有一定的参考价值。

  深度学习Keras之父、谷歌大脑人工智能和深度学习研究员Fran?ois Chollet撰写了一本深度学Python教程实战书籍《Python深度学习》,书中介绍了深度学习使用Python语言和强大Keras库,详实新颖。
  
  近日,Fran?ois Chollet接受了采访,就“深度学习到底是什么”、“Python为何如此广受欢迎”、“目前深度学习面临的主要挑战”等议题进行了回答。他认为,目前很多深度学习领域的论文都是无意义的,因为这些研究使用了不科学、不规范的研究方法。以下是采访全文编译。
  
  640?wx_fmt=jpeg&wxfrom=5&wx_lazy=1
  
  关于本人
  
  问:您主要的工作内容是什么?
  
  答:我在谷歌大脑团队工作,花了很多时间开发Keras。我也参加TensorFlow的工作。最近我主要在写机器学习、计算机视觉、将深度学习应用于定理证明等方面的论文。我的主要研究兴趣是理解AI中的抽象和推理问题,如何从感知得到抽象的、高度概括的模型。
  
  深度学习的本质、挑战、和未来
  
  问:深度学习到底是什么?
  
  答:深度学习是机器学习的一种具体方法。与以前的方法相比,它更加强大和灵活。在大多数应用程序中,我们所说的“深度学习”是指一种把大量由人类注释的数据转换为以与人类相似的方式自动注释新数据的软件。您可以通过这种方式自动完成很多不同的任务。深度学习尤其擅长理解“感知”数据,如图像、视频或声音。
  
  我来举例说明。假设有很多图片都带有相关联标签(如“猫”、“狗”)。深度学习可以让你自动将数据转换到一个“了解”如何把图片映射到标签的系统,只需从示例中学习,无需任何手动调整或自定义工程。然后这种系统可以被应用到新的数据,将标记图片任务有效自动化。
  
  同样,你可以将深度学习应用于机器翻译、语音识别、文本到语音转换,光学字符识别等问题。
  
  问:深度学习社区现在面临的主要挑战是什么?
  
  答:打击炒作、发展伦理意识、获得科学严谨性。
  
  炒作:对人工智能的大肆炒作正在危害这个领域。一些人正荒谬地夸大目前AI取得的进展,还说人工智能已把人类逼到了绝境。但事实并非如此。如果我们把目标设得极高,却又不能实现,就是逼着公众站在我们的对立面上。而且,炒作AI这件事,本质上是不诚实的,对公众讨论也产生了危害。
  
  伦理: 现在部署人工智能系统的大多数人来自单一背景,他们往往没有意识到自己所构建的系统给人们带来了道德影响和副作用。这将成为一个问题,因为这个群体所拥有的权力会越来越大。我们需要更多地讨论这些问题,并提高人们对不道德使用AI的潜在行为的觉察力,例如具有偏见性的预测模型会影响公众生活,或以危险的方式操纵AI。
  
  科学: 每天都有大量的深度学习论文发表,其中大多数并没有真正产生任何有意义的新知识,因为这些论文没有遵循科学的研究方法。他们以模糊的方式“评估”模型,或者在他们的训练数据上测试过度拟合模型(尤其是生成模型和强化学习,这是深度学习研究中发展最快的两个主题),仅在MNIST上评估模型等。深度学习简直是科学的重灾区。同行评审通常不会以有意义的方式解决这些问题,也许部分原因是大多数同行评审员进入这个领域最多才一两年。如果想要取得更快的进展,那么当涉及研究可重复性、基线、模型评估和统计显著性时,我们需要更加严谨。我们目前的激励机制是与科学相对立的:发表论文是被鼓励的。如果你的研究听起来既复杂又神秘,很难被正确评估研究重要性,那么发表论文就容易多了。
  
  问:你认为深度学习的未来是什么?
  
  答:我期望AI未来能把“直观的”模式识别模块与正式推理模块相结合。我也希望AI能够演变得更像自动化软件开发的形式,借用目前软件工程中的很多模式和实践。
  
  写书动机
  
  问:你出版了一本新书《Python深度学习》。为什么要写这本书呢?
  
  答:写这本书的原因是,我想推出一个课程,来教那些已有Python编程能力,但没有机器学习背景的人。
  
  Python为何广受欢迎
  
  问:Python应该是目前发展最快的编程语言,至少在高收入国家是这样。为什么Python如此受欢迎?
  
  答:我爱Python。学习Python很容易上手,当你习惯使用它之后,会越来越高效。与我使用过的大多数其他语言相比,Python非常直观和优雅。但是Python真正的杀手锏并不在于语言本身,而是周围的生态系统和社区。无论你需要做什么,比如解析特定的文件格式或与特定系统连接,几乎有一个Python库在做这件事,你不必花时间去做。在数据科学和机器学习方面尤其如此,有很多很棒的工具:numpy,pandas,scikit-learn,plotting libraries等,这使得Python成为一种非常高效的语言。
  
  我喜欢Python的另一个原因是,它并不是一个领域特定的语言,而是多领域的交叉点,从网站开发到数据科学和系统管理。这意味着无需切换到新语言来将Keras模型部署为Web API。无论你需要做什么,无论是启动一个web应用程序,查询一个REST API,还是解析一些文件,训练较先进的深度学习模型,Python通常都会是一个很好的选择。
  NFS 安装:

yum install nfs-utils portmap

systemctl restart nfs-server

systemctl enable nfs-server

systemctl status nfs-server

注意:千万不要手工启用rpcbind服务,换言之,不要执行systemctl restart rpcbind

二、服务器dhcp安装: yum install *dhcp*

(192.168.10.229是x86服务器的IP)

[[email protected] tftpboot]# cat /etc/dhcp/dhcpd.conf

subnet 192.168.10.0 netmask 255.255.255.0 {

range 192.168.10.100 192.168.10.200;

option domain-name-servers 8.8.8.8;

option routers 192.168.10.229;

default-lease-time 21600;

max-lease-time 43200;

next-server 192.168.10.229;

filename "pxelinux.0";

}

启动DHCP服务:

systemctl restart dhcpd

systemctl enable dhcpd

systemctl status dhcpd

三、TFTP服务器搭建: TFTP 服务是通过xinetd 工具管理的

1) yum install tftp-server xinetd

2) mkdir /tftpboot/ www.tkcyl1.com///创建TFTP服务共享的目录

修改如下:

[[email protected] tftpboot]# vim /etc/xinetd.d/tftp

# default: off

# description: The www.yitiali.com tftp server serves files using the trivial file transfer \

# protocol. The www.2018yulpt.com tftp protocol is often used to boot diskless \

# workstations, www.hjha178.com download configuration files to network-aware printers, \

# and to start the installation process for some operating systems.
  给初学者的建议
  
  问:有些声音认为进入机器学习有壁垒。您如何看待?
  
  答:我不同意。在过去的5年中,进入机器学习领域变得非常容易。当然,5-7年前这很艰难。你可能需要研究生教育。你需要用C ++或Matlab来编写大量的低级算法。我经历过这些。而现在不一样了。你只需要Python,很容易上手,你有权限访问高级和易于使用的工具(如Keras)。另外,你可以在网上学到很多非常高质量的资源,你可以在Kaggle上练习现实世界的问题。学习从未如此简单。
  
  问:对于初学者来说,最重要的是什么?
  
  答:最重要的是要深刻了解深度学习能做什么,不能做什么。去感受一些best practice,比如如何正确评估模型,如何防止过度拟合。这需要把正式解释(formal explanations)和对现实问题的广泛实践结合起来。

以上是关于软件工程师成长为架构师必备的十项技能的主要内容,如果未能解决你的问题,请参考以下文章

优秀软件架构师成长之路

优秀软件架构师成长之路

架构师害怕程序员知道的十项技能的读后感

怎样成长为优秀的软件架构师?

[架构之路-97]:《软件架构设计:程序员向架构师转型必备》-7-需求分析与业务需求领域建模

[架构之路-106]:《软件架构设计:程序员向架构师转型必备》-16-常见的十余种软件分层架构