写点什么

只有加法也能做深度学习的 AdderNet 开源了

  • 2020-02-27
  • 本文字数:1043 字

    阅读完需:约 3 分钟

只有加法也能做深度学习的AdderNet开源了

2 月 25 日,华为诺亚方舟实验室将 AdderNet 正式开源!目前,已经可以在 GitHub 上访问源代码(文末附 GitHub 代码库链接,感兴趣的开发者可以自行尝试)。


一个月以前,一篇名为《我们真的需要在深度学习中使用乘法吗?》的论文刷爆朋友圈,这篇来自华为诺亚方舟实验室与北大合作的论文提出了一种新的方法,名为:AdderNet。


根据论文介绍:与加法运算相比,乘法运算具有更高的计算复杂度。在深度神经网络中被广泛使用的卷积计算,正是衡量输入特征和卷积滤波器之间相似度的交叉相关计算,这涉及到浮点值之间的大量乘法。而 AdderNet 可以将深度神经网络中,特别是卷积神经网络中的乘法,转换为更简单的加法运算,以便减少计算成本。


在 AdderNet 中,研究者采用了 L1 正则距离,用于计算滤波器和输入特征之间的距离,分析了这种新的相似性度量方法对神经网络优化的影响。为了获得更好的性能,研究人员还开发了一种特殊的反向传播方法来研究 AdderNet 的全精度梯度。然后,根据每个神经元梯度的大小,提出一种自适应学习速率策略来增强 AdderNet 的训练过程。


因此,在不使用卷积乘法的情况下,AdderNet 在 ResNet-50 上对 ImageNet 数据集进行训练后,能够取得 74.9% 的 top-1 精确度和 91.7% 的 top-5 精确度,如下图所示:



开源后,用户可以在自己的设备上对 AdderNet 进行配置,需要的基础环境为:


  • python 3

  • pytorch >= 1.1.0

  • torchvision


用户可以按照pytorch / examples准备 ImageNet 数据。此外,官方表示预训练的模型将很快发布。


目前,开发者可以通过运行如下代码来对 ImageNet val 集进行评估:


python test.py --data_dir 'path/to/imagenet_root/'
复制代码


在 ResNet-50 上对 ImageNet 数据集训练,用户将达到 74.9%的最高精度和 91.7%的 Top-5 精度。开发者可尝试运行如下代码,在 CIFAR-10 上进行求值运算:


python test.py --dataset cifar10 --model_dir models/ResNet20-AdderNet.pth --data_dir 'path/to/cifar10_root/'
复制代码


此外,在 ResNet-20 上对 CIFAR-10 数据集进行训练,用户将达到 91.8%的精度。


由于加法器过滤器是由 torch.cdist 实现的,所以 AdderNet 的推理很慢,但是用户可以编写cuda以获得更高的推理速度。


虽然 AdderNet 简化了运算成本,但是有一些反对的声音认为:类似的工作是可以通过硬件的优化(如 AI 芯片)来解决的,因此加法的优势其实并不算明显。如果有读者对 AdderNet 有更多见解,欢迎在留言区发表您的观点。


GitHub 开源链接:


https://github.com/huawei-noah/AdderNet


论文地址:


https://arxiv.org/pdf/1912.13200.pdf


2020-02-27 15:031533
用户头像
陈思 InfoQ编辑

发布了 576 篇内容, 共 286.5 次阅读, 收获喜欢 1303 次。

关注

评论

发布
暂无评论
发现更多内容

基于STM32+RC522设计的门禁系统

DS小龙哥

6 月 优质更文活动

Adobe 构建 IDP 之路的经验与教训

SEAL安全

IdP adobe 平台工程

【堡垒机】北京堡垒机品牌哪家好?优势有哪些?

行云管家

堡垒机 IT运维 北京

进阶篇丨链路追踪(Tracing)很简单:链路成本指南

阿里巴巴云原生

阿里云 云原生 链路追踪

设计与实现阶段的可靠性工作

阿泽🧸

6 月 优质更文活动

聊聊那些奇葩的代码规范 —— 所有 IntelliJ 的警告必须要处理

HoneyMoose

GreatSQL删除分区慢的跟踪

GreatSQL

greatsql greatsql社区

深入理解Java线程池:线程池参数调优与技巧

xfgg

Java 线程池 6 月 优质更文活动

软件测试/测试开发丨学习笔记Allure2添加用例标题、用例步骤

测试人

程序员 软件测试 测试开发 测试报告 Allure

Java面试卷到家了?分享经典Java万字笔记,查漏补缺,备战面试

做梦都在改BUG

Java java面试 Java八股文 Java面试题 Java面试八股文

Docker里的基础术语

穿过生命散发芬芳

Docker 6 月 优质更文活动

美国同事的那些离职类型

HoneyMoose

MobPush 配置应用包名

MobTech袤博科技

“古老”编程语言的最新选择!华为云发布CodeArts IDE for C/C++

华为云开发者联盟

云计算 后端 华为云 华为云开发者联盟 企业号 6 月 PK 榜

什么时候 MySQL 查询会变慢?

江南一点雨

MySQL 数据库

直播平台源码画面质量功能的实现

山东布谷科技

软件开发、 云算力模式系统开发源码 源码解读 直播系统 直播平台源码

Github127k点赞!堪称最强 Java面试指南!已跳槽字节涨15K

做梦都在改BUG

Java java面试 Java八股文 Java面试题 Java面试八股文

跨端框架的兴起:WePY(微信小程序容器技术)

没有用户名丶

当“代码农”遇上“码农”:揭秘主干开发的那些事儿 | 京东云技术团队

京东科技开发者

敏捷开发 单元测试 代码评审 主干开发 企业号 6 月 PK 榜

jvm中类和对象定义存储基础知识 | 京东云技术团队

京东科技开发者

Java JVM 虚拟机 企业号 6 月 PK 榜 对象定义存储

山东淄博市具有资质的等保测评机构有几家?咨询电话多少?

行云管家

等保 等级测评 淄博

Serverless: AI everywhere的下一块拼图

华为云开发者联盟

云计算 后端 华为云 华为云开发者联盟 企业号 6 月 PK 榜

慢 SQL 优化之索引的作用是什么? | 京东云技术团队

京东科技开发者

MySQL 数据库 innodb 慢SQL 企业号 6 月 PK 榜

轻量级分布式日志追踪-Tlog快速入门

javalover123

分布式 日志 Skywalking spring-boot Tlog

不止于快!巨湾技研发布凤凰电池技术,可实现全气候全电压平台极速充电

科技热闻

Maxcompute数据上云一致性比对

阿里云大数据AI技术

大数据 数据集 企业号 6 月 PK 榜

自动驾驶≠速度与激情

脑极体

自动驾驶

什么是CAS和ABA问题?如何解决?

javacn.site

如何从抓包文件中分析慢请求

蓝胖子的编程梦

Wireshark tcpdump 抓包 网络抓包 抓包分析

AntDB数据库入选艾媒金榜《2023年中国信创数据库企业TOP15》,位列前三

亚信AntDB数据库

AntDB 数据库· AntDB数据库 企业号 6 月 PK 榜

只有加法也能做深度学习的AdderNet开源了_开源_陈思_InfoQ精选文章