全部产品
云市场

深度学习网络可视化开发

更新时间:2019-05-28 15:51:55

  1. 在深度学习领域流传着这样一句话,“一张好的表示图,胜过一千个公式”
  2. 本文会介绍如何通过PAI-DSW中的FastNeuralNetwork功能实现深度学习网络的可视化编辑。

神经网络最早诞生于生物领域,用来模仿生物大脑复杂的神经元构成,后来人类为了探索大脑是如何思考,通过一层一层的数学公式来模拟大脑分析事物的过程。再后来就有了深度学习框架,人们可以通过代码去构建深度学习网络,复杂的深度学习网络通常由几十行甚至几百行代码构成,每一层网络又由许多参数组成,如下图:

当层数增多,通过代码去构建深度学习网络变的困难,并且难以维护和调整。FastNeuralNetwork功能可以将深度学习构图代码一键式转化成网络架构图,并且可以实现可视化编辑,大大增强了模型解读性和可维护性,如下图:

下面就介绍下如何使用FastNerualNetwork功能。

功能介绍

1.创建

进入DSW,目前只有KerasCode和KerasGraph两个Kernel实现了FastNeuralNetwork功能。

  • KerasCode:先写深度学习网络代码,然后将代码转成图
  • KerasGraph:直接通过画布构建深度学习网络,并且将图转成代码

也可以通过左侧Demo列表提供的官方代码FNNDemo直接使用。

2.Magic Command介绍

打开Keras Code功能进入交互式开发页面,先通过代码构建深度学习网络。如以下示例代码:

  1. import keras
  2. from keras.models import Model
  3. from keras.models import Sequential
  4. from keras.layers import Conv2D, Dense, MaxPooling2D, Flatten, Dropout
  5. from keras.initializers import VarianceScaling, Zeros
  6. model = Sequential()
  7. model.add(MaxPooling2D(padding='valid', data_format='channels_last', pool_size=(2, 2), strides=(2, 2), trainable=True))
  8. model.add(Conv2D(dilation_rate=(1, 1), padding='valid', data_format='channels_last', bias_initializer=Zeros(), use_bias=True, filters=64, strides=(1, 1), trainable=True, kernel_initializer=VarianceScaling(mode='fan_avg', seed=None, scale=1.0, distribution='uniform'), activation='relu', kernel_size=(3, 3)))
  9. model.add(MaxPooling2D(padding='valid', data_format='channels_last', pool_size=(2, 2), strides=(2, 2), trainable=True))
  10. model.add(Dropout(rate=0.25, trainable=True))
  11. model.add(Flatten(data_format='channels_last', trainable=True))
  12. model.add(Dense(bias_initializer=Zeros(), use_bias=True, units=128, trainable=True, kernel_initializer=VarianceScaling(mode='fan_avg', seed=None, scale=1.0, distribution='uniform'), activation='relu'))
  13. model.add(Dropout(rate=0.4, trainable=True))
  14. model.add(Dropout(rate=0.2))

代码中构建了一个Sequential模型,模型对象是model,可以通过输入Magic Command 将代码转化成图

  1. %show_model model

点击图片进入画图编辑界面:

3.编辑网络

FNN功能实现了Keras的原生Cell向画布拖拽并且编辑的功能,画布分为Cell列表区,画布编辑区和参数配置区。

相同作用的Cell会自动编排成组:

画布中的组件会跟代码做自动映射:

选中画布中的某个cell或者关系,按下backspace键,该画布或者关系即可被删除

4.代码保存

点击To Code按钮弹窗,提示通过画布的修改会导致代码有哪些变化:

点击ok,即可在原有代码文件中生成新的模型构建代码。