写点什么

只有加法也能做深度学习的 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:031748
用户头像
陈思 InfoQ编辑

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

关注

评论

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

如何打造一个爆款H5?

源字节1号

软件开发 H5 小程序开发

Java必备技能之源码篇(Nginx源码研究之nginx限流模块)

爱好编程进阶

Java 程序员 后端开发

Kafka的体系结构

爱好编程进阶

Java 程序员 后端开发

手把手教你使用 ESLint + Prettier 规范项目代码

CRMEB

大数据培训拉链表优化实践分享

@零度

数据仓库 大数据开发

OpenHarmony源码解析之电话子系统——通话流程

OpenHarmony开发者

OpenHarmony 电话子系统

2021 最新版 Spring Boot 速记教程

爱好编程进阶

Java 程序员 后端开发

Java初学者:String类

爱好编程进阶

程序员 后端开发

Java小白翻身教程-链表结构与编译大法(1)

爱好编程进阶

Java 程序员 后端开发

《Mybatis 手撸专栏》第8章:把反射用到出神入化

小傅哥

小傅哥 mybatis 源码学习 反射代理 技术框架

JUC常见的锁

爱好编程进阶

程序员 后端开发

浅谈 SAP UI5 框架对一些其他前端框架比如 Vue 的支持

汪子熙

JavaScript 前端开发 SAP Fiori 5月月更

易周金融分析 | 银保监会发文规范养老金融;宁波银行拿下消金牌照

易观分析

金融 银行

3年CRUD经验的Java程序员,金九银十想要跳槽,面试却遭到屡屡碰壁

爱好编程进阶

Java 程序员 后端开发

IDEA 2020

爱好编程进阶

Java 程序员 后端开发

Kubernetes下web服务的性能测试三部曲之二:纵向扩容

程序员欣宸

Java Kubernetes 5月月更 Jemter

vivo 万台规模 HDFS 集群升级 HDFS 3.x 实践

vivo互联网技术

大数据 hadoop hdfs

ArrayList源码分析-删除

zarmnosaj

5月月更

一文看懂——什么是Bonree Server?

博睿数据

Server 博睿数据 IT运维

面试突击48:死锁的排查工具有哪些?

王磊

Java java面试

java高并发系列 - 第28天:实战篇,微服务日志的伤痛

爱好编程进阶

Java 程序员 后端开发

leetcode38

爱好编程进阶

程序员 后端开发

网站开发进阶(六十六)CSS3 - 新单位vmin/vmax与旧单位ex/ch使用详解

No Silver Bullet

Ex 5月月更 vmin vmax ch

Liga译文 | 浅析「产品思维」

LigaAI

产品思维

Java开发的凡尔赛你不懂,晒出12月工资条,直言太辛苦

爱好编程进阶

程序员 后端开发

C语言_文件操作相关练习题

DS小龙哥

5月月更

听说你想学Python爬虫?我从零教你啊

梦想橡皮擦

5月月更

java培训千万数据提升速度的 SQL 优化方案

@零度

MySQL JAVA开发

同域下跨应用登录问题

混合应用开发 融合登录 统一登录

Java初学01:学习路线

爱好编程进阶

Java 程序员 后端开发

Java多线程学习

爱好编程进阶

Java 程序员 后端开发

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