本文为您介绍如何进行深度学习网络的可视化开发。

背景信息

神经网络最早诞生于生物领域,模仿生物大脑复杂的神经元结构。之后人类为了探索大脑的思考方式,通过多层数学公式模拟大脑分析事物的过程,最终形成了深度学习框架。

您可以通过代码构建深度学习网络,而复杂的深度学习网络通常由几十行甚至几百行代码构成,每一层网络又由多种参数组成,如下图所示。当网络层数增多,通过代码构建深度学习网络变得更困难,而且维护成本更高。传统深度学习网络
PAI-DSW的FastNeuralNetwork功能不仅可以将深度学习构图代码一键式转化为网络架构图,而且还支持可视化编辑,进而提高模型的易理解性和可维护性。深度学习概览

使用预置案例

如果您初次使用PAI-DSW,推荐通过预置案例,熟悉深度学习网络的可视化开发功能。

  1. 进入PAI-DSW开发环境。
    1. 登录PAI控制台
    2. 在左侧导航栏,选择模型开发和训练 > DSW-Notebook建模
    3. 在页面左上方,选择使用服务的地域。
    4. Notebook建模服务页面的搜索框,输入实例名称或实例ID关键字,搜索实例。
    5. 单击需要打开的实例操作列下的打开
  2. 下载深度学习网络的预置案例FNNDemo。
    1. 在PAI-DSW开发环境左侧的辅助工具栏,单击预制案例图标图标。预制案例
    2. 单击FNNDemo后的下载预制案例图标。
      下载完成的案例存储在/Demo/Cases路径。
  3. 打开FNNDemo文件。
    1. 在PAI-DSW开发环境左侧的辅助工具栏,单击打开文件图标。
    2. 进入/Demo路径。
      系统支持以下方式:
      • 双击Name列下的Demo
      • 右键单击Name列下的Demo,在快捷菜单中,单击Open
    3. 进入/Demo/Cases路径。
      系统支持以下方式:
      • 双击Name列下的Cases
      • 右键单击Name列下的Cases,在快捷菜单中,单击Open
    4. 进入/Demo/Cases/FNNDemo路径。
      系统支持以下方式:
      • 双击Name列下的FNNDemo
      • 右键单击Name列下的dsw_tutorial,在快捷菜单中,单击Open
    5. 打开案例文件。
      系统支持以下方式:
      • 双击Name列下的模型文件。
      • 右键单击Name列下的模型文件,在快捷菜单中,单击Open
  4. 在示例代码基础上,编辑网络并保存代码,具体方法请参见自定义开发的步骤4和步骤5。

自定义开发

PAI-DSW的FastNeuralNetwork功能支持以下开发模式:
  • Keras Code:首先编写深度学习网络代码,然后将其转换为图。
  • Keras Graph:直接通过画布构建深度学习网络,并且将图转换为代码。
以Keras Code为例,介绍深度学习网络的可视化开发。
  1. 进入PAI-DSW开发环境。
    1. 登录PAI控制台
    2. 在左侧导航栏,选择模型开发和训练 > DSW-Notebook建模
    3. 在页面左上方,选择使用服务的地域。
    4. Notebook建模服务页面的搜索框,输入实例名称或实例ID关键字,搜索实例。
    5. 单击需要打开的实例操作列下的打开
  2. 单击KerasCode图标图标,创建.ipynb文件。创建KerasCode
  3. 在交互式开发页面,构建深度学习网络。
    1. 使用代码构建深度学习网络,示例如下。
      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
    2. 使用Magic Command将代码转换为图。
      %show_model model
      深度网络图
    3. 单击图片,即可进入图片编辑页面。图片编辑页面
  4. 编辑网络。
    FNN功能实现了原生Keras的向画布拖拽并编辑Cell的功能。画布包括左侧的Cell列表区域、中间的画布编辑区域及右侧的参数配置区域。
    编辑过程中,相同作用的Cell会自动编排成组,如下图所示。自动编排
    画布中的组件会跟随代码进行自动映射,如下图所示。代码自动映射如果需要删除画布中的某个Cell或关系,则选中该Cell或关系,并按Backspace键。
  5. 保存代码。
    1. 单击画布上方的To Code,系统会在Diff Editor对话框显示代码的修改情况。修改对比
    2. 单击OK,即可在原有代码文件中生成新的模型构建代码。