【前沿】TensorFlow Pytorch Keras代码实现深度学习大神Hinton NIPS2017 Capsule论文
10月26日,深度学习元老Hinton的NIPS2017 Capsule论文《Dynamic Routing Between Capsules》终于在arxiv上发表。今天相关关于这篇论文的TensorFlow\Pytorch\Keras实现相继开源出来,让我们来看下。
论文地址:https://arxiv.org/pdf/1710.09829.pdf
Capsule 是一组神经元,其活动向量(activity vector)表示特定实体类型的实例化参数,如对象或对象部分。我们使用活动向量的长度表征实体存在的概率,向量方向表示实例化参数。同一水平的活跃 capsule 通过变换矩阵对更高级别的 capsule 的实例化参数进行预测。当多个预测相同时,更高级别的 capsule 变得活跃。我们展示了判别式训练的多层 capsule 系统在 MNIST 数据集上达到了最好的性能效果,比识别高度重叠数字的卷积网络的性能优越很多。为了达到这些结果,我们使用迭代的路由协议机制:较低级别的 capsule 偏向于将输出发送至高级别的 capsule,有了来自低级别 capsule 的预测,高级别 capsule 的活动向量具备较大的标量积。
CapsNet-PyTorch python依赖包 Python 3PyTorch
TorchVision
TorchNet
Visdom
BATCH_SIZE = 100NUM_CLASSES = 10NUM_EPOCHS = 30NUM_ROUTING_ITERATIONS = 3
Step 2 开始训练. 如果本地文件夹中没有MNIST数据集,将运行脚本自动下载到本地. 确保 PyTorch可视化工具Visdom正在运行。
$ sudo python3 -m visdom.server python3 capsule_network.py
经过30个epoche的训练手写体数字的识别率达到99.48%. 从下图的训练进度和损失图的趋势来看,这一识别率可以被进一步的提高 。
采用了PyTorch中默认的Adam梯度优化参数并没有用到动态学习率的调整。 batch size 使用100个样本的时候,在雷蛇GTX 1050 GPU上每个Epochs 用时3分钟。
Credits
主要借鉴了以下两个 TensorFlow 和 Keras 的实现:
Keras implementation by @XifengGuoTensorFlow implementation by @naturomics
Many thanks to @InnerPeace-Wu for a discussion on the dynamic routing procedure outlined in the paper.
CapsNet-Tensorflow
NumPy
Tensorflow (Im using 1.3.0, not yet tested for older version)
tqdm (for displaying training progress info) scipy (for saving image)
$ git clone https://github.com/naturomics/CapsNet-Tensorflow.git $ cd CapsNet-Tensorflow
第二步 下载MNIST数据集(http://yann.lecun.com/exdb/mnist/), 移动并解压到data/mnist 文件夹(当你用复制wget 命令到你的终端是注意渠道花括号里的反斜杠)
$ mkdir -p data/mnist $ wget -c -P data/mnist http://yann.lecun.com/exdb/mnist/{train-images-idx3-ubyte.gz,train-labels-idx1-ubyte.gz,t10k-images-idx3-ubyte.gz,t10k-labels-idx1-ubyte.gz} $ gunzip data/mnist/*.gz
第三步 开始训练:
$ pip install tqdm # install it if you havent installed yet $ python train.py
tqdm包并不是必须的,只是为了可视化训练过程。如果你不想要在train.py中将循环for in step ... 改成 ``for step in range(num_batch)就行了。
$ python eval.py --is_training False
错误的运行结果(Details in Issues #8):
training loss![d39afb6441fad222de027dafb71542e163ccc50e](https://yqfile.alicdn.com/d39afb6441fad222de027dafb71542e163ccc50e.png)
![6ff053759b0d6c567fae0fd2cf7417cd859268b4](https://yqfile.alicdn.com/6ff053759b0d6c567fae0fd2cf7417cd859268b4.png)
test acc
Results after fixing Issues #8:
关于capsule的一点见解
一种新的神经单元(输入向量输出向量,而不是标量)常规算法类似于Attention机制
总之是一项很有潜力的工作,有很多工作可以在之上开展
一篇新的投稿在ICLR2018上的后续论文(https://openreview.net/pdf?id=HJWLfGWRb) about capsules(submitted to ICLR 2018)
第二步 用 git命令下载代码到本地.
$ git clone https://github.com/xifengguo/CapsNet-Keras.git $ cd CapsNet-Keras
第三步 训练:
$ python capsulenet.py
一次迭代训练(default 3).
$ python capsulenet.py --num_routing 1
其他参数包括想 batch_size, epochs, lam_recon, shift_fraction, save_dir 可以以同样的方式使用。 具体可以参考 capsulenet.py
假设你已经有了用上面命令训练好的模型,训练模型将被保存在 result/trained_model.h5. 现在只需要使用下面的命令来得到测试结果。
$ python capsulenet.py --is_training 0 --weights result/trained_model.h5
将会输出测试结果并显示出重构后的图片。测试数据使用的和验证集一样 ,同样也可以很方便的在新数据上验证,至于要按照你的需要修改下代码就行了。
如果你的电脑没有GPU来训练模型,你可以从https://pan.baidu.com/s/1hsF2bvY下载预先训练好的训练模型
主要结果
运行 python capsulenet.py: epoch=1 代表训练一个epoch 后的结果 在保存的日志文件中,epoch从0开始。
损失和准确度:
一次常规迭代后的结果
运行 python CapsNet.py --num_routing 1
测试结果每个 epoch 在单卡GTX 1070 GPU上大概需要110s 注释: 训练任然是欠拟合的,欢迎在你自己的机器上验证。学习率decay还没有经过调试, 我只是试了一次,你可以接续微调。
运行 python capsulenet.py --is_training 0 --weights result/trained_model.h5
模型结构:
其他实现代码
Kaggle (this version as self-contained notebook):MNIST Dataset running on the standard MNIST and predicting for test data
MNIST Fashion running on the more challenging Fashion images.
参考网址链接:
https://github.com/gram-ai/capsule-networks
https://github.com/naturomics/CapsNet-Tensorflow
https://github.com/XifengGuo/CapsNet-Keras
原文发布时间为:2017-11-5
本文来自云栖社区合作伙伴新智元,了解相关信息可以关注“AI_era”微信公众号
原文链接:【前沿】TensorFlow Pytorch Keras代码实现深度学习大神Hinton NIPS2017 Capsule论文
金玉良缘易配而木石前盟难得|M1 Mac os(Apple Silicon)天生一对Python3开发环境搭建(集成深度学习框架Tensorflow/Pytorch) 笔者投入M1的怀抱已经有一段时间了,俗话说得好,但闻新人笑,不见旧人哭,Intel mac早已被束之高阁,而M1 mac已经不能用真香来形容了,简直就是“香透满堂金玉彩,扇遮半面桃花开!”,轻抚M1 mac那滑若柔荑的秒控键盘,别说996了,就是007,我们也能安之若素,也可以笑慰平生。好了,日常吹M1的环节结束,正所谓剑虽利,不厉不断,材虽美,不学不高。本次我们尝试在M1 Mac os 中搭建Python3的开发环境。
人工智能不过尔尔,基于Python3深度学习库Keras/TensorFlow打造属于自己的聊天机器人(ChatRobot) 聊天机器人(ChatRobot)的概念我们并不陌生,也许你曾经在百无聊赖之下和Siri打情骂俏过,亦或是闲暇之余与小爱同学谈笑风生,无论如何,我们都得承认,人工智能已经深入了我们的生活。目前市面上提供三方api的机器人不胜枚举:微软小冰、图灵机器人、腾讯闲聊、青云客机器人等等,只要我们想,就随时可以在app端或者web应用上进行接入。但是,这些应用的底层到底如何实现的?在没有网络接入的情况下,我们能不能像美剧[《西部世界》(Westworld)](https://movie.douban.com/subject/2338055/)里面描绘的那样,机器人只需要存储在本地的“心智球”就可以和人类沟
相关文章
- 飞桨黑客松#8深度学习的发展:历史、现状和未来_跟进前沿学习,除了读论文,还是读论文,外国的博客medium.com
- (转)为什么不去读顶级会议上的论文?适应于机器学习、计算机视觉和人工智能
- 深度 | Nature论文详解概率机器学习:从不确定性表征到自动建模(附论文)
- EmotiW 历年竞赛冠军数据及论文信息
- [顶会论文]:ICRA2019 机器人学习相关论文汇总
- [顶会论文]IROS2020机器人学习相关论文汇总
- 论文阅读:用于机器人独立装配编程的接触技能模仿学习
- 论文阅读:Unsupervised Visual-Linguistic Reference Resolution in Instructional Videos
- 论文阅读:基于目标的模仿学习的运动推理
- 论文阅读:通过构建技能树从演示中学习机器人
- 【毕业设计_课程设计】基于深度学习与词嵌入的情感分析系统设计与实现(源码+论文)
- 【毕业设计_课程设计】基于机器学习的情感分类与分析算法设计与实现(源码+论文)
- 自用的论文查重网站(中英文,懂的都懂,不懂的也没必要懂)
- 人工智能、机器学习等科技领域论文中常见的词汇SOTA到底是什么意思,具体的用法是什么???
- 【论文 PPT】 【转】Human-level control through deep reinforcement learning(DQN)
- 【长尾学习】BBN: Bilateral-Branch Network with Cumulative Learning for Long-Tailed Visual Recognition论文阅读
- 【Computer Vision学习】Shapes and Context: In-the-wild Image Synthesis & Manipulation 论文复现
- VQA学习笔记(二) SAN多层注意力堆叠模型论文解读
- 《EfficientDet:Scalable and Efficient Object Detection》论文笔记
- 《CBAM: Convolutional Block Attention Module》论文笔记
- 《HRank:Filter Pruning using High-Rank Feature Map》论文笔记
- 《EfficientNet:Rethinking Model Scaling for Convolutional Neural Networks》论文笔记