将Keras权值保存为动画视频,更好地了解模型是如何学习的

将Keras权值矩阵保存为简短的动画视频,从而更好地理解你的神经网络模型是如何学习的。下面是第一个LSTM层的例子,以及一个经过一个学习周期训练的6级RNN模型的最终输出层。蓝色代表低值,红色代表高值。

开始

依赖关系

# clone the repo, preferably somewhere in your PYTHONPATHgit clone https://github.com/brannondorsey/keras_weight_animatorcd keras_weight_animator

pip install -r requirements.txt

为了从保存的权值图像中渲染视频,你还必须在你的机器上安装以下包:

  • GNU Parallel
  • ImageMagick
  • FFmpeg

使用模块

这个模块被命名为keras_weight_animator。它公开了一个可以在任何模型fit(.)方法中包含的Keras回调函数。

## you can optionally add this module to your python path by appending ## its parent directory in sys.path. Uncomment below to do this.# import sys# sys.path.append('path/to/keras_weight_animator/..')from keras_weight_animator import image_saver_callback# assumes a keras model named "model"callbacks = [image_saver_callback(model, 'output_directory')]

model.fit(X_train, y_train, callbacks=callbacks)

image_saver_callback(…)的两个必需参数是Keras模型和一个output_directory,可以定期地保存权值图像。在默认情况下,keras_weight_animator将每100个批处理的层权值以PNGs格式保存在名为epoch_XXX-layer_NAME-weights_YY.的文件夹中的output_directory里。一旦训练完成,使用[bin/create_image_sequence.sh](bin/create_image_sequence.sh) path/to/output_directory,你可以从保存在output_directory中的图像序列创建短动画视频片段。使用parallel,mogrify和ffmpeg来创建一个来自output_directory中的每个文件夹中的图像序列,并以.mp4为后缀。视频文件将被命名为epoch_XXX-layer_NAME-weights_YY.mp4.这样的形式。你可以通过将render_videos=True参数传递给image_saver_callback(…),从而自动从你的训练脚本中运行该脚本。

可选参数

weight_image_sequences(…)采取了各种可选的关键字参数。

  • epochinterval(default=1):在每个epoch_interval周期保存权值图像。在默认情况下,每一个周期都要保存权值,但是如果你要训练很多的周期,你可能会想要改变这个问题。
  • batch_interval(default=100):在每个batch_interval批次保存权值图像. batch_interval=1将为每个批次保存权值.
  • cmap (default=’gray’): Matplotlib color map. 我建议尝试一些不同color maps,特别是RdBu.
  • render_videos (default=False):在model.fit()的结尾部分可以选择创建一个系统来调用create_image_sequences.sh <output_directory> (使用了on_train_end(...) 内部的函数)。将这个设置为True之后会自动为你提供mp4格式的视频。
# examplecallbacks = [image_saver_callback(model, 'weight_image_sequences', epoch_interval=10, batch_interval=1000, cmap='gray', render_videos=True)]
model.fit(X_train, y_train, callbacks=callbacks)

例子

我已经在examples/.py中包含了这个模块的示例用法。这个例子使用智能手机从WISDM中的加速度计数据来对人类活动任务进行分类,比如走路、站立、坐着、上楼等等。本例使用一个层的LSTM来对一组60个数据点进行分类,这是属于六个类中的一个。它将图像序列和视频输出到data/wisdm。

# download and uncompress the WISDM datacd data
curl http://www.cis.fordham.edu/wisdm/includes/datasets/latest/WISDM_ar_latest.tar.gz -o WISDM_ar_latest.tar.gz
tar -xzf WISDM_ar_latest.tar.gz
rm WISDM_ar_latest.tar.gzcd ../example

python wisdm.py

想法

使用bash脚本来利用并行、ImageMagick,和FFMPEG并不是最好的解决方案,但它值得我花时间去操作。

lil项目的目标是编写一个快速的工具,让我能够更好地理解在各种神经网络中权重是如何变化的。

如果你有兴趣贡献或维护一个更“干净”的版本,请联系(mailto:brannon@brannondorsey.com)。

归因和许可

这个模块是© Brannon Dorsey 2017 在麻省理工学院的许可下发布。你可以自由使用、修改、分发、销售等,这个软件基于这些条款下, 地址:https://github.com/brannondorsey/keras_weight_animator/blob/master/LICENSE。示例数据来自于福特汉姆大学发布的 WIreless Sensor Datamining Actitracker数据集:

Jennifer R. Kwapisz, Gary M. Weiss and Samuel A. Moore (2010). Activity Recognition using Cell Phone Accelerometers, Proceedings of the Fourth International Workshop on Knowledge Discovery from Sensor Data (at KDD-10), Washington DC. [PDF]

此文为编译作品,出处为:https://github.com/brannondorsey/keras_weight_animator#optional-parameters

原文发布于微信公众号 - ATYUN订阅号(atyun_com)

原文发表时间:2017-08-08

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏ATYUN订阅号

C-SATS工程副总裁教你如何用TensorFlow分类图像 part1

最近在深度学习算法和硬件性能方面的最新进展使研究人员和公司在图像识别,语音识别,推荐引擎和机器翻译等领域取得了巨大的进步。六年前,首次机器在视觉模式识别方面的表...

3479
来自专栏AI科技大本营的专栏

重磅消息 | 深度学习框架竞争激烈 TensorFlow也支持动态计算图

今晨 Google 官方发布消息,称 TensorFlow 支持动态计算图。 原文如下: 在大部分的机器学习中,用来训练和分析的数据需要经过一个预处理过程,输入...

2725
来自专栏量化投资与机器学习

深度学习项目

Github上比较受欢迎的深度学习项目(Top Deep Learning Projects),按照获得星星个数的排名,包括一些教程项目等。 ? ? ? ?

1986
来自专栏大数据文摘

目标检测必须要OpenCV?10行Python代码也能实现,亲测好用!

本文作者和他的团队构建了一个名为ImageAI 的Python库,集成了现今流行的深度学习框架和计算机视觉库。本文将手把手教你构建自己的第一个目标检测应用,而且...

1856
来自专栏机器之心

开源 | 深度安卓恶意软件检测系统:用卷积神经网络保护你的手机

选自GitHub 机器之心编译 参与:Panda 恶意软件可以说是我们现代生活的一大威胁,为了保护我们电子设备中的财产和资料安全,我们往往需要寻求安全软件的帮助...

2947
来自专栏和蔼的张星的图像处理专栏

LCT代码跑起来先文章思路总结

论文才刚开始看,但是代码先跑了一下看结果,有一点小坑,记录下: 首先去论文的github上去下载代码:点这里 readme里其实写了怎么搞:

4843
来自专栏ATYUN订阅号

【实践操作】 在iOS11中使用Core ML 和TensorFlow对手势进行智能识别

在计算机科学中,手势识别是通过数学算法来识别人类手势的一个议题。用户可以使用简单的手势来控制或与设备交互,让计算机理解人类的行为。 这篇文章将带领你实现在你自己...

4956
来自专栏XAI

Java分布式神经网络库Deeplearning4j 环境搭建和运行一个例子

DeeplearningforJava简单介绍: deeplearning4j是一个Apache 2.0-licensed,开源的,分布式神经网络库编写的jav...

4138
来自专栏AI研习社

Github 项目推荐 | ANSI C 的简单神经网络库

Genann是一个经过精心测试的库,用于在 C 中训练和使用前馈人工神经网络(ANN)。它的主要特点是简单、快速、可靠和可魔改(hackable),它只需要提供...

811
来自专栏PPV课数据科学社区

TensorFlow必知基础知识​

TensorFlow概要 Google第一代分布式机器学习框架DistBelief1,在内部大规模使用后并没有选择开源。而后第二代分布式机器学习系统Tenso...

4276

扫码关注云+社区

领取腾讯云代金券