在深度学习领域流传着这样一句话,“一张好的表示图,胜过一千个公式”
本文会介绍如何通过PAI-DSW中的FastNeuralNetwork功能实现深度学习网络的可视化编辑。
PAI产品入口:https://data.aliyun.com/product/learn
神经网络最早诞生于生物领域,用来模仿生物大脑复杂的神经元构成,后来人类为了探索大脑是如何思考,通过一层一层的数学公式来模拟大脑分析事物的过程。再后来就有了深度学习框架,人们可以通过代码去构建深度学习网络,复杂的深度学习网络通常由几十行甚至几百行代码构成,每一层网络又由许多参数组成,如下图:
当层数增多,通过代码去构建深度学习网络变的困难,并且难以维护和调整。FastNeuralNetwork功能可以将深度学习构图代码一键式转化成网络架构图,并且可以实现可视化编辑,大大增强了模型解读性和可维护性,如下图:
下面就介绍下如何使用FastNeuralNetwork功能。
功能介绍
1.创建
进入DSW,目前只有KerasCode和KerasGraph两个Kernel实现了FastNeuralNetwork功能。
- KerasCode:先写深度学习网络代码,然后将代码转成图
- KerasGraph:直接通过画布构建深度学习网络,并且将图转成代码
也可以通过左侧Demo列表提供的官方代码FNNDemo直接使用。
2.Magic Command介绍
打开Keras Code功能进入交互式开发页面,先通过代码构建深度学习网络。如以下示例代码:
import keras
from keras.models import Model
from keras.models import Sequential
from keras.layers import Conv2D, Dense, MaxPooling2D, Flatten, Dropout
from keras.initializers import VarianceScaling, Zeros
model = Sequential()
model.add(MaxPooling2D(padding='valid', data_format='channels_last', pool_size=(2, 2), strides=(2, 2), trainable=True))
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)))
model.add(MaxPooling2D(padding='valid', data_format='channels_last', pool_size=(2, 2), strides=(2, 2), trainable=True))
model.add(Dropout(rate=0.25, trainable=True))
model.add(Flatten(data_format='channels_last', trainable=True))
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'))
model.add(Dropout(rate=0.4, trainable=True))
model.add(Dropout(rate=0.2))
代码中构建了一个Sequential模型,模型对象是model,可以通过输入Magic Command 将代码转化成图
%show_model model
点击图片进入画图编辑界面:
3.编辑网络
FNN功能实现了Keras的原生Cell向画布拖拽并且编辑的功能,画布分为Cell列表区,画布编辑区和参数配置区。
相同作用的Cell会自动编排成组:
画布中的组件会跟代码做自动映射:
4.代码保存
点击To Code按钮弹窗,提示通过画布的修改会导致代码有哪些变化:
点击ok,即可在原有代码文件中生成新的模型构建代码。