旷视提出AutoML新方法,在ImageNet取得新突破 | 技术头条

「2019 Python开发者日」,购票请扫码咨询 ↑↑↑
来源 | 旷视研究院
近日,来自旷视研究院的郭梓超、张祥雨、穆皓远、孙剑等人发表一篇新论文“Single Path One-Shot Neural Architecture Search with Uniform Sampling”,提出一个单路径 One-Shot 模型,以解决训练过程中面对的主要挑战。目前,这一方法在大型数据集 ImageNet 上取得了当前最优结果。
值得一提的是,孙剑现任旷视研究院院长,与同为深度残差网络ResNet作者之一的张祥雨(与孙剑一起加盟旷视)早已合作多次。
传送门:
https://arxiv.org/abs/1904.00420
导语
简介
本文 One-Shot NAS
One-Shot NAS方法回顾
单路径超网络与均匀采样
超网络与选择单元
通道数搜索
混合精度量化搜索
基于进化算法的模型搜索
总结
实验
构造单元搜索
通道数搜索
对比SOTA方法
混合精度量化搜索
搜索成本分析
参考文献
导语
一步法(One-Shot)是一个强大的神经网络模型搜索(Neural Architecture Search/NAS)框架,但是它的训练相对复杂,并且很难在大型数据集(比如 ImageNet)上取得较有竞争力的结果。
本文中,旷视研究院提出一个单路径 One-Shot 模型,以解决训练过程中面对的主要挑战,其核心思想是构建一个简化的超网络——单路径超网络(Single Path Supernet),这个网络按照均匀的路径采样方法进行训练。
所有子结构(及其权重)获得充分而平等的训练。基于这个已训练的超网络,可以通过进化算法快速地搜索最优子结构,其中无需对任何子结构进行微调。
对比实验证明了这一方法的灵活性和有效性,不仅易于训练和快速搜索,并且可以轻松支持不同的复杂搜索空间(比如构造单元,通道数,混合精度量化)和搜索约束(比如 FLOPs,速度),从而便于满足多种需求。这一方法在大型数据集 ImageNet 上取得了当前最优结果。
简介
深度学习终结了手工设计特征的时代,同时解决了权重优化问题。NAS 则旨在通过另一个方法——模型搜索(architecture search),终结人工设计架构。
早期的 NAS 方法使用嵌套式优化,从搜索空间采样出模型结构,接着从头训练其权重,缺点是对于大型数据集来讲计算量过大。新近的 NAS 方法则采用权重共享策略减少计算量。本文提出的超网络则包含所有子结构,只训练一次,所有子结构便可以直接从超网络获得其权重,无需从头训练。即使在大型数据集上,计算也十分高效。
大多数权重共享方法使用连续的搜索空间,将模型结构分布不断参数化。这些参数在超网络训练期间与网络权重进行联合优化。因此可以在优化时进行模型搜索,从分布中采样最优的架构。其公式化表示优雅而理论完备。但是存在两个问题:
第一,超网络的权重深度耦合。目前尚不清楚为什么特定结构的复用权重(inherited weights)依然有效。第二,联合优化导致了模型参数和超网络权重的进一步耦合。梯度方法的贪婪天性不可避免地在结构分布和超网络权重中引入偏差。这很容易误导模型搜索。精细地微调超参数和优化过程被用于先前方法之中。
One-Shot 是一种新范式。它定义了超网络,并以相似的方式做权重复用。但是并没有将模型结构分布参数化。模型搜索从超网络训练中解耦,并且解决步骤是独立的。因此,One-Shot 具有序列性。它结合了上述嵌套式和联合式优化方法的优点,因此灵活而高效。
尽管第二个问题已解决,现有 One-Shot 并未很好地解决第一个问题。超网络的权重依然耦合。优化依然复杂,并包含敏感的超参数,导致在大型数据集上表现欠佳。
本文方法的动机旨在吸收 One-Shot 的优点,克服其缺点。One-Shot 成功的关键是使用复用权重的模型的精度可以用来预测从头训练模型的精度。因此,旷视研究院提出,超网络训练应是随机的。这样所有子结构的权重能够被同时且均匀地优化。
为减少超网络的权重耦合,旷视研究院提出一个单路径超网络,在每次迭代训练中只有单路径结构被激活。训练中不需要任何超参数来指导子结构的选择,采用均匀采样的方式,平等对待所有子结构。
本文方法简单而灵活,超网络训练中没有超参数。其简易性允许设计丰富的搜索空间,包括新设计通道单元和位宽单元。模型搜索过程十分高效,因为只需要基于超网络的权重进行前向计算。进化算法则用来轻松支持多种约束。
综合性消融实验及在大型数据集(ImageNet)上的实验证明了这一方法在精度、内存消耗、训练时间、模型搜索的有效性及灵活性方面都表现良好,达到了当前最优的结果。
本文 One-Shot NAS
One-Shot NAS方法回顾
上所述,耦合式模型搜索和权重优化是存在挑战和问题的。通过回顾发现,早期使用嵌套优化的 NAS 方法在于解决公式 (1) 和 (2) 的优化问题,这不禁引起思考,问题解耦和权重共享的优点是否可以兼得?
这一考虑诞生了所谓的 One-Shot 。这些方法依然只训练一次超网络,并允许各结构共享其中的权重。
但是,超网络训练及模型搜索作为先后次序的两个步骤是解耦的。请注意,这不同于嵌套优化或联合优化。
首先,超网络权重被优化为:
相比公式 (4),公式 (5) 已经不存在搜索空间的连续参数化,只有网络权重被优化。
其次,搜索部分被表示为:
公式 (6) 与公式 (1) 、 (2) 的最大区别是其权重是预先初始化的。评估 仅需要推理。没有微调或者再训练。因此搜索非常有效。
通过借助进化算法,搜索同样非常灵活。像等式 (3)对模型结构进行的约束可以精确地满足。并且一旦训练好一个超网络,可在同一超网络内基于不同约束(比如 100ms 和 200ms 延迟)重复搜索。这些特性是先前方法所缺失的,将使 One-Shot NAS 方法对实际任务更具吸引力。
但依然存在一个问题。在等式 (5) 中,超网络训练的图节点权重是耦合的,复用权重是否适用于任意子结构尚不清楚。
单路径超网络和均匀采样
按照基本原理重新出发,会使 One-Shot 范式更有效。在等式 (5) 中,模型搜索成功的关键在于,在验证集中,使用复用权重(没有额外的微调)的任意子结构的精度是高度可信的。正如等式 (1) 是理想情况,需要权重
近似最优权重
。近似的效果和训练损失函数
被最小化的程度成正比。这推导出一个原则:超网络权重
的优化应当与搜索空间中所有子结构的优化同时进行。这可表示为:
请注意,等式 (7) 是等式 (5) 的实现。在优化的每一步中,子结构是随机采样的,只有对应的权重被激活和更新。这不仅节省内存空间,而且高效。由此,超网络本身不再是一个有效的网络,而变成一个随机的网络。
为减少节点权重之间的协同适应,旷视研究院提出最大化简化搜索空间。它只包含单一路径架构,如图 1 所示。
图 1:单一路径超网络架构图
在每次训练时仅保留一个。不存在任何调优。训练在本文实验中收敛良好。
先验分布很重要。旷视研究员通过实验发现,均匀采样已经足够好。这并不让人惊讶。这是因为实际任务常常期望有多个模型结构,以满足不同的约束。图 2 表明,两个采样方法皆工作良好,均匀约束采样方法表现稍好,本文默认使用它。
表 2:不同采样策略的单路径超网络的进化模型搜索
本文注意到,在优化时根据结构分布采样一个路径已经出现在之前的权重共享方法之中,区别在于,在本文的训练中(等式(7))分布 是一个固定的先验,而在先前方法中,它是可学习和更新的(等式(4)),后者会使超网络权重和结构参数优化高度关联。
请注意,本文并未声明在训练时一个固定的先验分布天生优于优化分布。不存在这样的理论保证。本文更优的结果可能是受益于这一事实:当前优化技术的成熟度不足以满足等式 (4) 中的联合优化需求。
超网络与选择单元
选择单元用于构建一个超网络。图 1 给出了一个实例。一个选择单元包含多个选择。对于本文提出的单路径超网络,每个选择单元一次只调用一个选择。一个路径的获得是通过随机采样所有选择单元实现的。
本文方法的简易性允许定义不同类型的选择单元,以搜索不同的结构变量。具体而言,旷视研究院提出两个全新的选择单元,以支持复杂的搜索空间。
通道数搜索。选择单元旨在搜索一个卷积层的通道数。其主要思想是预先分配一个带有最大通道数的权重张量。在超网络训练期间,系统随机选择通道数并分割出用于卷积的相应的子张量。详见图 4。
图 4:用于通道数搜索的选择单元
混合精度量化搜索。选择单元可以搜索卷积层权重和特征的量化精度。在超网络训练中,特征图的位宽和和权重被随机选取。详见图 5。
图 5:用于混合精度量化搜索的选择单元
基于进化算法的模型搜索
针对等式 (6) 中的模型搜索,先前的 One-Shot 工作使用随机搜索。这在大的搜索空间中并不奏效。因此,本文使用了进化算法,同时扬弃了从头开始训练每个子结构的缺点,只涉及推理部分,因此非常高效。详见算法 1。
算法 1:基于进化算法的模型搜索
图 3 描绘了使用进化算法和随机搜索两种方法在进化迭代时的验证集精度。很明显进化算法搜索更有效。
图 3:进化算法搜索对比随机搜索
进化算法可以灵活处理等式 (3) 的不同约束,因为变异和交叉过程是可控的,以产生满足约束条件的合适候选。
总结
单路径超网络、均匀采样训练策略、基于进化算法的模型搜索、丰富的搜索空间设计,上述多种设计使得本文方法简单、高效和灵活。表 1 给出了本文方法与其他权重共享方法的一个全方位、多维度对比结果。
表 1:本文方法对比当前权重共享 SOTA 方法
实验
所有实验是在 ImageNet 上进行的。验证集和测试集的设定遵从 Proxyless NAS [4]。对于超网络的训练,以及(进化搜索之后)最优模型结构的从头再训练,本文使用和 [17] 一样的设定。
构造单元搜索
构造单元(building block)的设计灵感来自手工设计网络的代表作——ShuffleNet v2。表 2 给出了超网络的整体架构。共有 20 个选择单元。
表 2:超网络架构
表 3 给出了结果。为了对比,本文设置了一系列基线,如下:1)只选择一个特定的单元选择;2)从搜索空间中随机选择一些候选;3)使用随机搜索替代本文的进化算法模型搜索。
表 3:构造单元搜索结果
通道数搜索
搜索卷积层的通道数非常有挑战,如图 4 所示,本文提出一个全新的选择单元用于通道数搜索,并首先在基线结构 “all choice 3”(见表 3)做了评估,结果如表 4 (第一部分)所示;为进一步提升精度,本文对构造单元和通道做了联合搜索。结果如表 4(第二部分)所示。
表 4:通道数搜索
对比SOTA方法
虽然表 4 展示了本文方法的优越性,但是由于搜索空间和训练方法的不同,存在不公平对比的可能性。为直接进行对比,本文采用和 Proxyless NAS [4]、FBNet [26] 相同的搜索空间,并在同一设置下再训练已搜索的模型,具体对比结果如表 5 所示:
表 5:本文方法与当前 SOTA NAS 方法的对比
混合精度量化搜索
低功率设备部署模型时需要用到量化技术。但是在通道数与位宽之间找到一个权衡不无挑战。对于这些问题,本文方法可迎刃而解。
这里的搜索空间包含上述的通道搜索空间和混合精度量化搜索空间,后者使用一个全新的选择单元搜索权重和特征图的位宽,如图 5 所示。
在超网络训练中,对于每个选择单元,特征位宽和权重位宽是随机采样的。他们在进化步骤中被确定。具体实验结果如表 6 所示:
表 6:混合精度量化搜索的结果
搜索成本分析
搜索成本在 NAS 中是一件要紧的事。本文给出了与先前方法 [4] [26] 的一些对比结果,如表 7 所示:
表 7:搜索成本
参考文献
[2] G. Bender, P.-J. Kindermans, B. Zoph, V. Vasudevan, and Q. Le. Understanding and simplifying one-shot architecture search. In International Conference on Machine Learning, pages 549–558, 2018. 1, 2, 3, 4, 5, 6
[3] A. Brock, T. Lim, J. M. Ritchie, and N. Weston. Smash: one-shot model architecture search through hypernetworks. arXiv preprint arXiv:1708.05344, 2017. 1, 2, 3, 4, 6
[4] H. Cai, L. Zhu, and S. Han. Proxylessnas: Direct neural ar- chitecture search on target task and hardware. arXiv preprint arXiv:1812.00332, 2018. 1, 2, 3, 4, 5, 6, 7, 8
[17] N. Ma, X. Zhang, H.-T. Zheng, and J. Sun. Shufflenet v2: Practical guidelines for efficient cnn architecture design. In Proceedings of the European Conference on Computer Vi- sion (ECCV), pages 116–131, 2018. 5, 7
[22] O. Russakovsky, J. Deng, H. Su, J. Krause, S. Satheesh, S. Ma, Z. Huang, A. Karpathy, A. Khosla, M. Bernstein, et al. Imagenet large scale visual recognition challenge. International journal of computer vision, 115(3):211–252, 2015. 5
[24] M. Tan, B. Chen, R. Pang, V. Vasudevan, and Q. V. Le. Mnasnet: Platform-aware neural architecture search for mo- bile. arXiv preprint arXiv:1807.11626, 2018. 1, 2, 3, 5, 7
[26] B. Wu, X. Dai, P. Zhang, Y. Wang, F. Sun, Y. Wu, Y. Tian, P. Vajda, Y. Jia, and K. Keutzer. Fbnet: Hardware-aware efficient convnet design via differentiable neural architecture search. arXiv preprint arXiv:1812.03443, 2018. 1, 2, 3, 4, 5, 6,7,8
(*本文仅代表作者观点,转载请联系原作者)
◆
精彩推荐
◆
「2019 Python开发者日」,这一次我们依然“只讲技术,拒绝空谈”10余位一线Python技术专家共同打造一场硬核技术大会。更有深度培训实操环节,为开发者们带来更多深度实战机会。更多详细信息请咨询13581782348(微信同号)。
推荐阅读:
愚人节,看你们把AI逼成什么样了?
何恺明等人提TensorMask框架:比肩Mask R-CNN,4D张量预测新突破
儿科医生的眼泪,全被数据看见了
程序员怒了!你敢削减专利奖金,我敢拒绝提交代码!
趣挨踢 | 用大数据扒一扒蔡徐坤的真假流量粉
姚期智提出的"百万富翁"难题被破解? 多方安全计算MPC到底是个什么鬼?
程序媛报告:调查了12,000名女性开发者发现,女性比男性更懂Java!
靠找Bug赚了6,700,000元!他凭什么?
你也可以点击阅读原文,查看大会详情。
相关文章:

9.QT-标准对话框
Qt提供的可复用的标准对话框,全部继承自QDialog类,如下图所示: QMessageBox:信息对话框,用于显示信息、询问问题等;QFileDialog:文件对话框QColorDialog:颜色对话框QInputDialog:输入对话框(允许用户输入一…

【Python】解决print不能立即打印的问题
1、问题描述 在Python中使用print打印hello world时,终端不显示 def hello():print("hello world!")2、原因 因为标准输入输出stdin/stdout有缓冲区,所以使用print不能立即打印出来,作为刚接触Python的菜鸟,迷瞪了半…

windows mobile做一个摄象头预览程序
zdirectshow的原理大概大家都知道,基本就是用微软封装的接口来实现硬件无关性,但是最终调用的接口都要在驱动层有对应的实现: 为了更清楚地演示directshow的数据传输过程,我必须说明的这个程序的基本流程。我采用的是vs2005 windows mobile 6。0 professional 仿真模拟器&…

初学者的机器学习入门实战教程!
点击上方↑↑↑蓝字关注我们~「2019 Python开发者日」,购票请扫码咨询 ↑↑↑作者 | Adrian Rosebrock译者 | kbsc13,京东算法工程师,研究领域计算机视觉来源 | 机器学习与计算机视觉(ID:AI_Developer)这是…

【Qt】调用Python函数:无参数、单个参数、多个参数、数组参数
一、链接配置 如果缺少头文件需要安装python3-dev: sudo apt-get install python3-dev链接libpython3.4库,添加头文件路径,以Qt为例: INCLUDEPATH += /usr/include/python3.4 LIBS += -L /usr/lib/python3.4/config-3.4m-x86_64-linux-gnu -lpython3.4二、头文件 因为p…

分布式系统的问题
本文内容翻译自《Designing Data-Intensive Applications》一书的第8章。 近几章主要介绍系统如何处理错误。例如,我们讨论了副本故障转移,复制滞后和事务的并发控制。当我们理解实际系统中可能出现的各种边界情况时,我们就能更好地处理它们。…

php-cgi占用cpu资源过高的解决方法
转的网上的,不过对PHP-CGI菜鸟的人,还是有点帮助的。 1. 一些php的扩展与php版本兼容存在问题,实践证明 eAccelerater与某些php版本兼容存在问题,具体表现时启动php-cgi进程后,运行10多分钟,奇慢无比&#…

请收下这份NLP热门词汇解读
点击上方↑↑↑蓝字关注我们~「2019 Python开发者日」,购票请扫码咨询 ↑↑↑本文转载自微软研究院AI头条(ID:MSRAsia)编者按:在过去的一段时间,自然语言处理领域取得了许多重要的进展,Transformer、BERT、…

【Ubuntu】dpkg: 处理软件包 XXXX (--configure)时出错解决方法
1、使用apt-get --purge remove删除安装包时报错 dpkg: 处理软件包 python-gflags (–configure)时出错: 子进程 已安装 post-installation 脚本 返回了错误号 1 正在设置 python-sklearn (0.14.1-2) … Traceback (most recent call last): File “/usr/bin/pycom…

c#devexpress GridContorl添加进度条
demo 的实现图 下边是步骤和代码 1定义 时钟事件,定时的增加进度条的增量. 2: 添加进度条 3;定义字段属性 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; …

信达充值旗舰店
在淘宝上新开了一个话费 游戏点卡充值的小店,以后大家话费没了可以联系我啊,速度还是蛮快的,都是赔本卖的只想提高点信誉,所以价格也是最最低的了,感谢大家的支持,多多帮忙啊^_^ http://sjzxinda.taobao.co…

完整代码+实操!手把手教你操作Faster R-CNN和Mask R-CNN
点击上方↑↑↑蓝字关注我们~「2019 Python开发者日」全日程揭晓,请扫码咨询 ↑↑↑机器视觉领域的核心问题之一就是目标检测(Object Detection),它的任务是找出图像当中所有感兴趣的目标(物体),…

【Dlib】使用dlib_face_recognition_resnet_model_v1.dat无法实现微调fune-tuning
1、问题描述 dlib官方使用resnet训练人脸识别,训练了300万的数据,网络参数保存在dlib_face_recognition_resnet_model_v1.dat中。 测试中识别lfw数据时,准确率能达到99.13%,但是在识别自己的数据时,准确率有点低&…

Visual Studio 2017 - Windows应用程序打包成exe文件(1)- 工具简单总结
最近有对一个Windows应用程序少许维护和修改。修改之后要发布新的exe安装文件,打包exe文件时,遇到了很头疼的问题,还好最后解决了,记录一下。 Visual Studio版本:Visual Studio 2017 Visual Studio 2017 打包插件 新建…

NET也有闭包
NET也有闭包在.NET中,函数并不是第一级成员,所以并不能像JavaScript那样通过在函数中内嵌子函数的方式实现闭包,通常而言,形成闭包有一些值得总结的非必要条件: 嵌套定义的函数。 匿名函数。 将函数作为参数或…

【opencv】ubuntu14.04上编译opencv2.4
参考博客 https://blog.csdn.net/c406495762/article/details/62896035 1、安装依赖库 sudo apt-get install build-essential cmake libgtk2.0-dev pkg-config python-dev python-numpy libavcodec-dev libavformat-dev libswscale-dev sudo apt-get install libv4l-0 libv…

1024块TPU在燃烧!BERT训练从3天缩短到76分钟 | 技术头条
点击上方↑↑↑蓝字关注我们~「2019 Python开发者日」全日程揭晓,请扫码咨询 ↑↑↑作者 | 琥珀出品 | AI科技大本营(ID:rgznai100)“Jeff Dean称赞,TensorFlow官方推特支持,BERT目前工业界最耗时的应用,计…

牵引力教育设计总监解密9大2018潮流UI设计趋向
作为一名紧跟时代潮流的UI设计师,设计的风格一定要紧跟上最新的设计趋势,因为更为有效且颇具趣味的响应式图标必将得到关注。同时,鲜艳丰富的色彩,精彩纷呈的插图设计都会博得用户眼球。这样你的设计更容易获得更多人的认可与热爱…

Android媒体相关开发应用程序接口
翻译自:http://developer.android.com/guide/topics/media/index.html MediaAndroid框架支持各种普通media类型的编解码,因此你可以很容易地把音频,视频和图片整合到你的应用程序中。通过使用MediaPlayer的接口,你可以播放各种音视…

Facebook开源图嵌入“神器”:无需GPU,高效处理数十亿级实体图形 | 极客头条...
点击上方↑↑↑蓝字关注我们~「2019 Python开发者日」全日程揭晓,请扫码咨询 ↑↑↑编译 | Major、一一出品 | AI科技大本营(ID: rgznai100)有效处理大规模图对于促进人工智能的研究和应用至关重要,但特别是在工业应用中的图&…

【opencv】ubuntu14.04上编译opencv-4.0.1 + opencv_contrib-4.0.1
1、要求 编译器版本:c11 cmake版本:3.5.1 2、安装camke 2.1 官网下载:https://cmake.org/download/ 选择:Linux x86_64 cmake-3.14.1-Linux-x86_64.sh 2.2 安装: 将cmake-3.14.1-Linux-x86_64.sh拷贝考ubuntu中&…

软件开发文档模板 (学习)
1 可行性研究报告 可行性研究报告的编写目的是:说明该软件开发项目的实现在技术、经济和社会条件方面的可行性;评述为了合理地达到开发目标而可能先择的各种方案;说明论证所选定的方案。 可行性研究报告的编写内容要求如下: …

Unix数据中心主宠儿
曾几何时UNIX一直是除个人电脑之外的领域中应用最为广泛的操作系统,并且为现代操作系统的成型奠定了基础,可以说UNIX的历史就像应用程序本身一样耐人寻味。UNIX的过去回首1983年,肯.托马森和D.里奇由于对操作系统发展史以及UNIX操作系统应用所…

【AI】基本概念
1、什么是人工智能 人工智能(AI)是通过研究、开发,来找到用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门新的综合性的科学技术。其表现为,让计算机系统通过机器学习等方式,来获得可以履行原本只有依…

在浏览器中进行深度学习:TensorFlow.js (四)用基本模型对MNIST数据进行识别
2019独角兽企业重金招聘Python工程师标准>>> 在了解了TensorflowJS的一些基本模型的后,大家会问,这究竟有什么用呢?我们就用深度学习中被广泛使用的MINST数据集来进行一下手写识别的操作。 MINST数据集 MINST是一组0到9的手写数字…

不止临床应用,AI还要帮不懂编程的医生搞科研
近日,推想科技发布 AI 学者科研平台 InferScholar Center,该平台为更多的医生提供零门槛的 AI 科研能力,让医生可以快速将深度学习、影像组学以及文本数据处理相关的前沿技术应用到自己的临床科研实践中,他们将为平台上的医疗科研…

rhel6Inode详解
在Linux文件系统中,很多人对Inode都不太明白,今天我就和大家一起来分享一下我对Inode的认识,如果有理解错误的地方,请大家多多批评指点。在上一篇一天一点学习Linux之认识文件系统中,在最后给出了一张EXT3文件系统结构…

争论不休的TF 2.0与PyTorch,到底现在战局如何了? | 技术头条
点击上方↑↑↑蓝字关注我们~「2019 Python开发者日」全日程揭晓,请扫码咨询 ↑↑↑作者 | Jeff Hale译者 | Jackey编辑 | Jane出品 | AI科技大本营(id:rgznai100)【导语】 TensorFlow 2.0 和 PyTorch 1.0 陆续发布后,…

struts2实验2:struts2.xml action中* ,{}以及${}
p.s 关键在于struts.xml中的匹配,使用* ,{}以及${}可以让代码更加简洁清晰 代码核心思路 在struts.xml中通过路由(url)去指定控制逻辑的Action中的方法,例如 <package name"admin" namespace"/admin" extends"struts-global">&…

【Ubuntu】dpkg-deb -c :查看deb文件中的内容
1、dpkg-deb -c :查看deb文件中的内容 $ dpkg-deb -c packageeg: $ dpkg-deb -c sogoupinyin_2.2.0.0108_amd64.deb drwxr-xr-x root/root 0 2018-04-18 16:50 ./ drwxr-xr-x root/root 0 2018-04-18 16:50 ./etc/ drwxr-xr-x root/root …