写点什么

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

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

关注

评论

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

PC GWP-ASan方案原理 | 堆破坏问题排查实践

字节跳动终端技术

问题排查 PC

Nautilus Chain 上首个 DEX PoseiSwap 通证经济学模型解析

股市老人

火山引擎DataLeap推出全链路智能监控报警平台

字节跳动数据平台

数据中台 SLA 数据监控 企业号 4 月 PK 榜

深度学习基础入门篇[四]:激活函数介绍:tanh、sigmoid、ReLU、PReLU、ELU、softplus、softmax、swish等

汀丶人工智能

人工智能 机器学习 深度学习 激活函数

selenium源码通读·5 |webdriver/common/action_chains.py-ActionChains类分析

Python 源码 测试 自动化测试 selenium

深度剖析Redis九种数据结构实现原理

Java 数据库 redis 缓存

三维设计新帮手|Blender怎么入门?

Finovy Cloud

blender 3D软件

一站式指标平台 Kyligence Zen 功能详解

Kyligence

数据分析 指标平台

数据开发提效有秘诀!离线开发BatchWorks 六大典型场景拆解

袋鼠云数栈

大数据 离线开发

阿里独家「操作系统和计算机网络」,GitHub标星超百万

Java 程序员 计算机网络 操作系统

从零学习SDK(5)SDK文档的学习和参考

MobTech袤博科技

火山引擎数智平台协助洞察美图类APP新增长 付费用户转化超过124%

字节跳动数据平台

大数据 增长 产品增长 企业号 4 月 PK 榜 美图

博睿学院 | 本周四:OpenTelemetry技术在数据标准化中应用实践

博睿数据

可观测性 智能运维 博睿数据 前沿技术 博睿学院

重磅官宣,OpenHarmony开发者大会来了!

OpenHarmony开发者

OpenHarmony

Netty服务开发及性能优化

Java Netty

Spring Cloud微服务网关Zuul过滤链和整合OAuth2+JWT入门实战

Java Spring Cloud OAuth2 JWT Zuul

一次goroutine 泄漏排查案例

蓝胖子的编程梦

golang 性能 协程 pprof 线上故障

软件测试如何自我提升

FunTester

软件测试/测试开发丨Pytest 结合 Allure 生成测试报告

测试人

软件测试 自动化测试 测试开发 pytest Allure

GitHub数据库榜单第一:Redis核心原理实践

Java 数据库 redis 缓存

看了我常用的IDEA插件,同事也开始悄悄安装了

Java你猿哥

Java 程序员 ssm IDEA 架构师

手把手教你,从零开始搭建Spring Cloud Alibaba!这份笔记太牛了

Java你猿哥

spring Spring Cloud ssm 架构师

商汤版ChatGPT「商量」来了!开放API,基于千亿参数大模型,体验实录在此

Openlab_cosmoplat

开源社区 ChatGPT

OpenTelemetry 正在改变我们跟踪和设计应用的方式

NGINX开源社区

nginx 云原生

Kubernetes 多集群网络方案系列 1 -- Submariner 介绍

Se7en

解决事务隔离产生问题的MVCC

selenium源码通读·4 |webdriver/common分析

Python 源码 测试 自动化测试 selenium

阿里内部热捧“Spring全线笔记”,不止是全家桶,太完整了

Java你猿哥

spring Spring Cloud Spring Boot Spring MVC

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