在 TensorSpace 中,可以通过构建 TensorSpace 图建构来重建预训练网络的图结构,并且定制 3D 可视化效果。根据不同的 TensorSpace 模型种类,有不同的图结构构建方式。
flare
构建顺序模型图结构
flare
构建函数模型图结构
构建顺序模型图结构
TensorSpace 顺序模型和 Keras 中的顺序模型有着相似的概念 -- 多个网络层的线性堆叠。在 TensorSpace 中,我们可以使用顺序模型的 .add() 方法来将 TensorSpace Layer 添加到模型中,TensorSpace 将会在初始化阶段自动构建出 Layer 栈。
举个例子,如果想要构建如下 LeNet 顺序模型结构:
图1 - 顺序图结构
使用以下代码进行构建:
let model = new TSP.models.Sequential( modelContainer );
model.add( new TSP.layers.GreyscaleInput() );
model.add( new TSP.layers.Conv2d() );
model.add( new TSP.layers.Pooling2d() );
model.add( new TSP.layers.Conv2d() );
model.add( new TSP.layers.Pooling2d() );
model.add( new TSP.layers.Dense() );
model.add( new TSP.layers.Dense() );
model.add( new TSP.layers.Output1d( {
outputs: [ "0", "1", "2", "3", "4", "5", "6", "7", "8", "9" ]
} ) );
model.load({
// ..Loader configuration
});
model.init();
构建函数模型图结构
TensorSpace 函数模型和 Keras 中的函数模型有着相似的概念 -- 可用于定义复杂模型。在 TensorSpace 中,我们可以使用 TensorSpace Layer 的 .apply() API 和 网络层融合方法 来连接
Layer,然后配置模型的 inputs 和 outputs
参数来定义模型的输入层和输出层。TensorSpace 将会根据以上信息,在初始化阶段构建出可视化模型。
举个例子,如果想要构建如下 LeNet 函数模型结构:
图2 - 函数模型图结构
使用以下代码进行构建:
let input = new TSP.layers.GreyscaleInput();
let conv2d_1 = new TSP.layers.Conv2d();
conv2d_1.apply(input);
let conv2d_2 = new TSP.layers.Conv2d();
conv2d_2.apply(input);
let add_output = TSP.layers.Add([conv2d_1, conv2d_2]);
let model = new TSP.models.Model(modelContainer, {
inputs: [input],
outputs: [add_output]
});
model.load({
// ..Loader configuration
});
model.init();
TensorSpace 图结构和神经网络图结构对比
TensorSpace 模型和预训练的网络层模型都具有图结构,那么他们有什么关系呢?简答来说,TensorSpace 图结构可以看做是预训练模型图结构的子集。我们可以通过构建 TensorSpace 图结构来完全还原或部分还原预训练网络模型的图结构。
完全还原预训练网络图结构
图3 - 完全还原
部分还原预训练网络图结构
Fig. 4 - 部分还原