alpha阶段前后端接口文档试用版
Posted nag2020
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了alpha阶段前后端接口文档试用版相关的知识,希望对你有一定的参考价值。
alpha阶段前后端接口文档
功能说明:前端有若干个模块,包括神经网络层和经典模型可供用户选择,用户根据这些模块来搭建模型。
static里面是需要用户指定的全局变量。
一个数组,每个数组元素对应用户所连接的 一条边,同时记录了两个端点的字段信息,还附加了一个区别于其他端点的id字段和 代表该端点是否是根节点的字段。 (2)调用方法:调用/VisualPytorch/VisualPytorch/ops.py下的main_func(edge_record) 即可,其中,edge_record为(1)中前端传给后端的数据,该函数的返回值为三个字 符串数组,依次为main.py,model.py,ops.py的内容。
只涉及到两种输入方式,包括表单输入类型以及选项类型,与之前相同。
关于输入的词法合法性由前端解决,而语法合法性由后端
例如shape(string),合法输入为 : 2,2
如果输入3?3则前端报错
如果输入与前一个网络层的输出不匹配,则由后端报错
每个参数规范如下
以in_channel(int):输入通道数 非0正数
in_channel为json格式中对应的attribute名
int为数据类型
输入通道数为对应的中文含义,可以忽略也可以在前端中给出
非0正数为对输入数据的要求,如果不符合应在前端报错
Structure部分规范
一、神经网络层及其参数:
1、view_layer:reshape层(与之前保持相同)
view_layer为json中name,reshape层为网页中显示的名字,下同
参数类型:
shape(string)
用户可以输入多个数字,包括所有非负整数和-1(只有-1是例外),同维度数字之间以英文的“,”分开,例如1,2,3,4,5
2、linear_layer:全连接层(与之前保持相同)
参数类型:
in_channel(int):输入通道数 要求为非0正数
out_channel(int):输入通道数 要求为非0正数
3、conv_layer卷积层(删除了之前的1维/2维卷积层)
参数类型:
layer_type:下拉框二选一,conv/conv_transpose
conv和conv_transpose参数相同
type:下拉框三选一,选项包括1d/2d/3d
in_channel(int):输入通道数 非0正数
out_channel(int):输出通道数 非0正数
kernel_size (int) : 卷积核的尺寸 非零正数
stride (int) : 卷积步长 非零正数
padding (int) : 补充0的层数 非负整数
4、element_wise_add_layer:元素级相加层(与之前保持相同)
无参数
5、concatenate_layer:channel维度拼接层(与之前保持相同)
参数类型:
dim(int):拼接维度 非0正数
6、pool_layer:最大池化层(新增,从卷积层分离)
参数类型:
layer_type:下拉框三选一,选项包括max_Pool/avg_Pool/max_Unpool
max_pool参数:
type:下拉框三选一,选项包括1d/2d/3d
kernel_size (int) : 卷积核的尺寸 非0正数
stride (int) : 卷积步长 非0正数
padding (int) : 补充0的层数 非负整数
avg_pool参数:
type:下拉框三选一,选项包括1d/2d/3d
kernel_size (int) : 卷积核的尺寸 非0正数
stride (int) : 卷积步长 非0正数
padding (int) : 补充0的层数 非负整数
ceil_mode:下拉框二选一,ceil/floor
count_include_pad:下拉框二选一,true/false
max_unpool参数:
type:下拉框三选一,选项包括1d/2d/3d
kernel_size (int) : 卷积核的尺寸 非0正数
stride (int) : 卷积步长 非0正数
7、activation_layer激活层(新增,从卷积层分离)
参数类型:
layer_type:下拉框,包括relu/sigmoid/tanh/leaky relu/elu
对不同layer_type的参数
relu:无参数
sigmoid:无参数
tanh:无参数
leaky relu:negative_slope(double) 非0正实数
elu:angle(double) 非0正实数
8、softmax_layer:softmax层(新增,从卷积层分离)
参数类型:
dim(int):计算维度 非0正数
9、RNN_layer:递归神经网络(新增网络层)
参数类型:
input_size(int):输入特征数 非0正数
hidden_size(int):隐藏层个数 非0正数
num_layers(int):递归层层数 非0正数
nonlinearity:二选一,tanh/relu
10、LSTM_layer:长周期神经网络(新增网络层)
参数类型:
input_size(int):输入特征数 非0正数
hidden_size(int) :隐藏层个数 非0正数
num_layers(int):递归层层数 非0正数
11、norm_layer:标准化层(新增网络层)
参数类型:
layer_type:下拉框,选项包括batch_norm/group_norm/instance_norm
batch_norm参数:
type:下拉框,包括1d/2d/3d
num_features(int):输入特征数 非0正数
group_norm参数:
num_groups(int):input_channel分组数 非0正数
num_channel(int):input_channel个数 非0正数
instance_norm参数:
type:下拉框,包括1d/2d/3d
num_features(int):输入特征数 非0正数
12、dropout_layer:dropout层(新增网络层)
参数类型:
type:下拉框,包括1d/2d/3d
p(int):置0概率 0-1范围内实数(包括0和1)
13、
二、static参数
1、epoch(int):全数据集训练次数 非0正数
2、learning_rate(double):学习率 大于0的实数
3、learning_rate_scheduler:学习率下降 ,下拉框,共包括StepLR, MultiStepLR, ExponentialLR, CosineAnnealingLR,None
stepLR参数:
step_size(int):衰减周期 非0正数
gamma(int):衰减幅度 非0正数
MultiStepLR参数:
milestones(string):衰减时间点
用户可以输入多个数字,包括所有非负整数,同维度数字之间以英文的“,”分开,例如1,2,3,4,5
gamma(int):衰减幅度 非0正数
ExponentialLR参数:
gamma(int):衰减幅度 非0正数
CosineAnnealingLR参数:
T_max(int):迭代次数 非0正数
eta_min(double):最小学习率 大于0实数
4、batch_size(int):每次训练个数 非0正数
5、optimizer:优化器 下拉框,共包含SGD,Momentum,RmsProp,Adam,Adamax,ASGD
6、dataset:训练数据集 下拉框,共包含mnist,cifar10,stl10,svhn,jena,glove
7、ifshuffle:是否打乱数据集 勾选框,默认为勾选,在json中为true,否则为false
8、platform:运行平台 下拉框,共包含CPU/GPU
9、loss_func:损失函数 下拉框,共包含MSELoss,CrossEntrophyLoss,L1Loss,NLLLoss,BCELoss
三、经典模型选择
1、Lenet
conv_2d->relu->maxpool2d->conv_2d->relu->maxpool2d->linear->relu->linear->relu->linear
(仅作为说明模型结构,无意义,下同)
2、Alexnet
features->classfier
features:conv_2d->relu->maxpool2d->conv2d->relu->maxpool2d->conv2d->relu->conv2d->relu->conv2d->relu->maxpool2d
classfier:linear->relu->linear->relu->linear
3、NIN
conv2d->relu->conv2d->relu->conv2d->relu
这三类模型作为Sequential提前存储,可直接调用,即
对应的feature中name固定为Lenet/Alexnet/NIN,attribute根据对应结构预先编写
四、输入的json格式(structure中)
共包括2种json结构,包括网络模型json结构:feature,和static变量json结构:data
只有生成代码(gen_code)时需要向后端传送data结构,其他任何关于模型的操作只要用到feature结构
(即把static变量和神经网络模型分离)
对于type为Sequential的结构,表示嵌套模型
name:对于最终保存的模型,为用户保存时给出的模型名/对于中间结构的嵌套模型,name可以缺省
attribute:表示嵌套模型内部各个模型的具体属性(包括内部的嵌套模型和base模型)
nets_conn:表示内部模型连接情况
对于type为base的结构,表示单个网络层
name:表示所属那种网络层,如linear_layer/pool_layer等
attribute:表示网络层属性,如in_channel,out_channel等
nets_conn(base类没有该种结构)
"feature":{
"canvas_%d":#网络层结构唯一id
{
"type": "Sequential"|"base", #Sequential表示嵌套模型,base表示单个网络层
"name": "ABCD", #对于Sequential为用户在保存网络层时为网络层取的名字
#对于base层为网络层对应的名字,
#对于中间的Sequential(即只作为保存网络结构一部分 例如最终生成结构D=A+B+C中的非base
#A B C),name可以缺省
"start":"canvas_%d"#表示每个Sequential开始节点,即入度为0的节点。如果实现困难可以暂缓给出该属性
"attribute":{#对于Sequential attribute的结构
"nets":{
"canvas_%d":
{
"type":
"name":
"attribute":{
}
},
"canvas_%d":
{
"type":
"name":
"attribute":{
}
},
},
"attribute":{#对于base attribute的结构,以pool_layer为例
"layer_type":
"type":
"kernel_size":
"stride":
"padding":
"left":"XXXpx",#绘制时的位置,Sequential可缺省该属性
"Right":"XXXpx"#绘制时的位置,Sequential可缺省该属性
}
"nets_conn":[ #描述每个Sequential内部的连通情况,base层没有该属性
{
"source":{
id:"canvas_%d",
anchor_position:("Bottom"/"Up"/"Left"/"Right"),
#对于type=base表示箭头连接位置,对于Sequential可缺省
},
"target":{
id:"canvas_%d",
anchor_position:("Bottom"/"Up"/"Left"/"Right"),
#对于type=base表示箭头连接位置,对于Sequential可缺省
}
}
],
}
}
}
data:
{
"static":{
”变量名”:“变量值”,
}
}
举个例子
对于以下结构
对应生成的json文件为:
feature:{
"canvas_1":{
"type":"Sequential",
"name":"model3",
"start":"canvas_2",
"attribute":{
"canvas_2":{
"type":"Sequential",
"name":"model1",
“start":"canvas_3",
"attribute":{
"canvas_3":{
"type":"base",
"name":"linear_layer",
"attribute":{
"in_channel":"",
"out_channel":""
}
}
"canvas_4":{
"type":"base",
"name":"conv_layer",
"attribute":{
"type":
"in_channel":
"out_channel":
"kernel_size":
"stride":
"padding":
}
}
}
"nets_conn":[
"source":{
"id":"canvas_3",
"anchor_position":"bottom"#箭头连接位置
}
"target":{
"id":"canvas_4",
"anchor_position":"up"#箭头连接位置
}
]
}
"canvas_5":{
"type":"Sequential",
"name":"model2",
"start":"canvas_6",
"attribute":{
"canvas_6":{
"type":"base",
"name":"pool_layer",
"attribute":{
#pool的具体参数
}
}
"canvas_7":{
"type":"base",
"name":"softmax_layer",
"attribute":{
#softmax层具体参数
}
}
}
"nets_conn":[
"source":{
"id":"canvas_6",
"anchor_position":"bottom"#箭头连接位置
}
"target":{
"id":"canvas_7",
"anchor_position":"up"#箭头连接位置
}
]
}
}
"nets_conn":[
"source":{
"id":"canvas_2",
"anchor_position":"bottom"#对于Sequential而言没有意义,可缺省
}
"target":{
"id":"canvas_5",
"anchor_position":"up" #对于Sequential而言没有意义,可缺省
}
]
}
}
data:{
static:{
"static变量名":
"具体值":
}
}
二、网络模型接口
1、NetworkList类
(1)获得存储的模型
字段 | 内容 |
---|---|
http请求类型 | GET |
url | [ip]/api/NeuralNetwork/network/ |
status(success) | 200 |
status(failure) | 400 |
返回值示例
[
{
"id": 100,
"creator": -1,
"feature": {模型结构},
"time": "2019-04-18T07:35:43.036087Z"
},
{
"id": 101,
"creator": -1,
"feature": {模型结构},
"time": "2019-04-18T07:35:48.066113Z"
}
]
(2) 保存模型
字段 | 内容 |
---|---|
http请求类型 | POST |
url | [ip]/api/NeuralNetwork/network/ |
status(success) | 201 |
status(failure) | 400 |
data字段
{
"creator":[用户令牌,未登录默认为-1],
"feature":[模型结构]
}
2、NetworkDetail类
该类用于对后端已存储的网络模型进行一些细节操作。
(1)根据id获取模型
字段 | 内容 |
---|---|
http请求类型 | GET |
url | [ip]/api/NeuralNetwork/network/[id]/ |
status(success) | 200 |
status(failure) | 400 |
返回值示例
{
"id": 101,
"creator": -1,
"feature":[模型结构],
"time": "2019-04-18T07:35:48.066113Z"
}
(2)根据id修改模型
字段 | 内容 |
---|---|
http请求类型 | PUT |
url | [ip]/api/NeuralNetwork/network/[id]/ |
status(success) | 200 |
status(failure) | 400 |
data字段
{
"creator":[用户令牌,未登录默认为-1],
"feature":[模型结构]
}
(3)根据id删除模型
字段 | 内容 |
---|---|
http请求类型 | DELETE |
url | [ip]/api/NeuralNetwork/network/[id]/ |
status(success) | 200 |
status(failure) | 400 |
3、代码生成接口
字段 | 内容 |
---|---|
http请求类型 | POST |
url | [ip]/api/NeuralNetwork/getcode/ |
status(success) | 200 |
status(failure) | 400 |
data字段
{
"creator":[用户令牌,未登录默认为-1],
"feature":[模型结构],
"data":[static变量]
}
返回值
{
"Main":[Main模块代码],
"Model":[Model模块代码],
"Ops":[Ops模块代码]
}
以上是关于alpha阶段前后端接口文档试用版的主要内容,如果未能解决你的问题,请参考以下文章