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正数为对输入数据的要求,如果不符合应在前端报错
-
数据类型正则表达式如下:
<整数> ^(\+|\-)?(\d+)$ <正整数> ^\+?[1-9]\d*$ <非负整数> ^\+?\d+$ <非负整数及-1> $\+?\d+|\-1$ <非负数> ^(0|[1-9][0-9]*)(\.\d+)?$ <正数> ^([1-9][0-9]*(\.\d+)?)|(0\.\d+)$ <X序列> ^(<X>)(\s*,\s*(<X>))*$ 例如:<非负整数及-1序列> ^(\+?\d+|\-1)(\s*,\s*(\+?\d+|\-1))*$ <非负整数序列> ^(\+?\d+)(\s*,\s*(\+?\d+))*$ <0-1间实数> ^0(.\d+)?|1$ <0-1内实数> ^0.\d+$
注意:
- 前端给后端提供是所有数据的类型均为字符串类型:勾选框给后端的是"true"或"false"字符串,下拉框给后端的是类似"2d"的字符串
- 无默认值的参数必须填上正确类型的值,否则报错
- 默认参数为None的,如果没有改动则不报错,返回"None"字符串给后端
- 请注意0-1间和0-1内的区别!
一、网络层及参数
1. 简单网络层
注意:view_layer为json中layer_type,reshape层为网页中显示的名字,下同
view_layer:reshape层(与之前保持相同)
- shape <非负整数及-1序列> 无默认值
- 用户可以输入多个数字,包括所有非负整数和-1(只有-1是例外),同维度数字之间以英文的“,”分开,例如1,2,3,4,5
linear_layer:全连接层(与之前保持相同)
- in_features<正整数>输入通道数 无默认值
- out_features<正整数>:输入通道数 无默认值
element_wise_add_layer:元素级相加层(与之前保持相同)
- 无参数
concatenate_layer:channel维度拼接层(与之前保持相同)
- dim<非负整数>:拼接维度 默认值为0
softmax_layer:softmax层(新增,从卷积层分离)
- dim<正整数>:计算维度 无默认值
dropout_layer:dropout层(新增网络层)
-
type:下拉框,包括1d/2d/3d 默认值为2d
-
p<0-1间实数>:置0概率 默认值为0.5
2. conv_layer卷积层(删除了之前的1维/2维卷积层)
layer_type:下拉框二选一,conv/conv_transpose 默认值为conv
conv和conv_transpose参数相同
-
type:下拉框三选一,选项包括1d/2d/3d 默认值为2d
-
in_channels<正整数>:输入通道数 无默认值
-
out_channels<正整数>:输出通道数 无默认值
-
kernel_size <正整数> : 卷积核的尺寸 默认值为3
-
stride<正整数> : 卷积步长 默认值为1
-
padding<非负整数> : 补充0的层数 默认值为0
3. pool_layer:最大池化层(新增,从卷积层分离)
layer_type:下拉框三选一,选项包括max_pool/avg_pool/max_unpool 默认值为max_pool
max_pool参数:
-
type:下拉框三选一,选项包括1d/2d/3d 默认值为2d
-
kernel_size <正整数> : 卷积核的尺寸 默认值为2
-
stride <正整数> : 卷积步长默认值为2
-
padding <非负整数> : 补充0的层数 默认值为0
avg_pool:
-
type:下拉框三选一,选项包括1d/2d/3d 默认值为2d
-
kernel_size<正整数> : 卷积核的尺寸 默认值为2
-
stride<正整数> : 卷积步长 默认值为2
-
padding <非负整数> : 补充0的层数 默认值为0
-
ceil_mode:下拉框二选一,ceil/floor 默认值为floor
-
count_include_pad(勾选框,默认为勾选,在json中为True,否则为False):平均计算中包括零填充 默认值为true
max_unpool参数:
-
type(下拉框三选一,选项包括1d/2d/3d) : 卷积形式 默认值为2d
-
kernel_size <正整数> : 卷积核的尺寸 默认值为2
-
stride<正整数> : 卷积步长 默认值为2
-
padding<非负整数> : 补充0的层数 默认值为0
4. activation_layer激活层(新增,从卷积层分离)
layer_type:下拉框,包括relu/sigmoid/tanh/leaky relu/PRelu/RRelu 默认值为relu
relu:无参数
sigmoid:无参数
tanh:无参数
leaky relu:
negative_slope<正数> 默认值为0.01
PRelu: 类似leaky relu, 但是负数部分斜率可学习
- weight<正数>权重初始化 非0正实数 默认值为0.25
RRelu: 类似leaky relu, 但是负数部分斜率为随机均匀分布
-
lower<正数>:均匀分布下限 默认值为0.125
-
upper<正数>:均匀分布上限 默认值为0.333
5. RNN_layer:递归神经网络(新增网络层)
-
input_size<正整数>:输入特征数 无默认值
-
hidden_size<正整数>:隐藏层个数 无默认值
-
num_layers<正整数>:递归层层数 默认值为1
-
nonlinearity(二选一,tanh/relu):非线性激活 默认为tanh
6. LSTM_layer:长周期神经网络(新增网络层)
-
input_size<正整数>:输入特征数 无默认值
-
hidden_size<正整数> :隐藏层个数 无默认值
-
num_layers<正整数>:递归层层数 默认值为1
7. norm_layer:标准化层(新增网络层)
下拉框,选项包括batch_norm/group_norm/instance_norm 默认值为batch_norm
batch_norm参数:
-
type:下拉框,包括1d/2d/3d 默认值为2d
-
num_features<正整数>:输入特征数 无默认值
group_norm参数:
-
num_groups<正整数>:input_channel分组数 无默认值
-
num_channel<正整数>:input_channel个数无默认值
instance_norm参数:
-
type:下拉框,包括1d/2d/3d 默认值为2d
-
num_features<正整数>:输入特征数 无默认值
二、static参数
1. 简单参数
epoch<正整数>:全数据集训练次数 默认值为10
learning_rate<0-1内实数>:学习率 默认值为0.01
batch_size<正整数>:每次训练个数 默认值为1
dataset(下拉框,共包含mnist,cifar10,stl10,svhn,jena,glove):训练数据集 默认值为mnist
ifshuffle(勾选框,默认为勾选,在json中为True,否则为False):是否打乱数据集 默认为true
platform(下拉框,共包含CPU,GPU):运行平台 默认CPU
2. learning_rate_scheduler:学习率下降
下拉框,共包括StepLR, MultiStepLR, ExponentialLR, CosineAnnealingLR,ReduceLROnPleateau,None 默认值为None
stepLR:
-
step_size<正整数>:衰减周期 默认值为50
-
gamma<0-1内实数>:衰减幅度 默认值0.1
MultiStepLR:
-
milestones<非负整数序列>:衰减时间点 默认值为50
-
用户可以输入多个数字,包括所有非负整数,同维度数字之间以英文的“,”分开,例如1,2,3,4,5
-
gamma<0-1内实数>:衰减幅度 默认值0.1
ExponentialLR:
- gamma<0-1内实数>:衰减幅度 默认值为0.95
CosineAnnealingLR:
-
T_max<正整数>:下降周期(变化的半周期)默认值为50
-
eta_min<正数>:最小学习率 默认值为0
ReduceLROnPleateau:监控指标,当指标不再变化则调整
- factor<0-1内实数>:调整系数 默认值为0.1
- patience<正整数>:“耐心 ”,接受几次不变化 默认值为10
- cooldown<正整数>:“冷却时间”,停止监控一段时间 默认值为10
- verbose(勾选框,默认为勾选,在json中为True,否则为False):打印日志 默认值为true
- min_lr<0-1内实数>:学习率下限 默认值为0.0001
3. optimizer:优化器
下拉框,共包含SGD,RMSprop,Adam,Adamax,ASGD 默认值为Adam
SGD:Stochastic Gradient Descent
- momentum <0-1间实数> - 动量 默认值为0
- weight_decay <0-1间实数> - L2正则项系数 默认值为0
- dampening <正数> – 动量衰减 默认值为0
- nesterov (勾选框,默认为勾选,在json中为True,否则为False) – 使用Nesterov梯度加速 默认值为false
ASGD: Averaged Stochastic Gradient Descent
- lambd <0-1间实数> - 衰减项 默认值为0.0001
- alpha <0-1间实数> - eta更新幂 默认值为0.75
- t0 <正整数> – 开始平均的点 默认值为1000000
- weight_decay<0-1间实数> - L2正则项系数 默认值为0
Adam:
- beta1<0-1内实数> - 梯度移动平均值的系数 默认值为0.9
- beta2<0-1内实数> - 梯度平方移动平均值的系数 默认值为0.999
- eps <0-1内实数>- 分母稳定项 默认值为0.00000001
- weight_decay<0-1间实数> - L2正则项系数 默认值为0
- amsgrad(勾选框,默认为勾选,在json中为True,否则为False) - 使用AMSGrad变体 默认值为false
RMSprop:
- momentum<0-1间实数>- 动量 默认值为0
- alpha<0-1间实数> - 平滑常数 默认值为0.99
- eps<0-1内实数> - 分母稳定项 默认值为0.00000001
- centered (勾选框,默认为勾选,在json中为True,否则为False)– 梯度通过方差归一化 默认值为flase
- weight_decay<0-1间实数> - L2正则项系数 默认值为0
Adammax: 无穷范数的Adam的变体
- beta1<0-1内实数>- 梯度移动平均值的系数 默认值为0.9
- beta2<0-1内实数>- 梯度平方移动平均值的系数 默认值为0.999
- eps<0-1内实数>- 分母稳定项 默认值为0.00000001
- weight_decay<0-1间实数> - L2正则项系数 默认值为0
4. loss_func:损失函数
下拉框,共包含MSELoss,CrossEntropyLoss,L1Loss,NLLLoss,BCELoss 默认值为MSELoss
MSELoss:均方误差
- reduction (下拉框,共包含none,mean,sum)- 输出的缩减 默认值为mean
CrossEntropyLoss:交叉熵损失
- weight (optional, <正数序列>)- 每个分类损失的权重 默认值为None
- ignore_index (optional, <整数>)- 忽略的目标 默认值为None
- reduction (下拉框,共包含none,mean,sum)- 输出的缩减 默认值为mean
L1Loss:mean absolute error(MAE)
- reduction (下拉框,共包含none,mean,sum)- 输出的缩减 默认值为mean
NLLLoss:negative log likelihood loss
- weight (optional, <正数序列>)- 每个分类损失的权重 默认值为None
- ignore_index (optional, <整数>)- 忽略的目标 默认值为None
- reduction (下拉框,共包含none,mean,sum)- 输出的缩减 默认值为mean
BCELoss:Binary Cross Entropy between the target and the output
- weight (optional, <正数序列>)- 每批损失的权重 默认值为None
- reduction (下拉框,共包含none,mean,sum)- 输出的缩减 默认值为mean
图像增强部分相关内容
注意:内容全部加在static.json中
ColorJitter(颜色变换)
随机对图片的四种属性进行改变
brightness(非负浮点数):亮度 默认值为0
contrast(非负浮点数):对比度 默认值为0
saturation(非负浮点数):饱和度 默认值为0
hue(非负浮点数且在0-0.5之间):色调 默认值为0
Pad(边界填充)
对图片边界进行填充
padding(正整数):表示对于图片那几个位置进行填充 不能为空否则报错
padding_mode :二选一,constant/edge 默认值为constant
RandomCrop(随机切割)
对图片进行随机切割
size(正整数):表示输出图片的大小
padding(正整数):表示对具体哪个位置进行填充 不能为空否则包括
pad_if_needed (True/False) :表示如果图片小于所需要的大小是否进行填充 默认值为True
padding_mode:二选一,constant/edge 默认值为constant
Grayscale(黑白变换)
将图片转换为黑白照片
num_output_channels(只能为1或3) 默认值为1
1表示黑白照片
3表示支持RGB照片
RandomAffine(随机变换)
对图片进行随机变换
保持图片中心不变,进行随机变换
degrees(非负浮点数):表示图片旋转度数 默认值为0
translate:格式为a,b,其中a、b皆为非负浮点数,表示图像在水平和垂直方向上的变化范围 默认值为None
scale:格式为a,b,其中a、b皆为非负浮点数,表示对图片的随机取样范围 默认值为None
RandomGrayscale(随机灰度变换)
对图片进行随机灰度变换
p(>=0 <=1浮点数):表示变换的概率 默认值为0.1
RandomHorizontalFlip(随机水平变换)
对图片进行随机水平变换
p:表示水平变换概率 默认值为0.5
RandomPerspective(透视变换)
对图片进行随机透视变换
p(>=0 <=1浮点数):表示变换的概率 默认值为0.5
distortion_scale(>=0 <=1浮点数):表示透视变形的程度 默认值为0.5
RandomRotation(随机旋转)
对图片进行随机旋转
degrees(非负浮点数):表示旋转度数 ,默认为0
expand(True/False):表示是否对旋转的图像进行扩展,默认为False
RandomVerticalFlip(垂直变换)
对图片进行随机垂直变换
p(>=0 <=1浮点数):表示变换的概率 默认值为0.5
RandomErasing(随机消除)
随机选取图片中的矩形大小区域并删除其中像素
p(>=0 <=1浮点数):表示删除的概率 默认值为0.5
scale:格式为a,b 其中a,b均为(>=0 <=1浮点数),表示矩形区域相较于原图片大小 默认值0.02, 0.33
ratio:格式为a,b 其中a,b均为(>=0 <=1浮点数),表示所擦除区域的纵横比范围 默认值0.3, 3.3
TenCrop(角变换)
将给定的PIL图像裁剪为四个角,并在中央裁剪并加上翻转的版本
size:格式为a,b 其中a和b都为正整数,表示变换后的图片尺寸 无默认值,输入时必须有值,进行非空判断
vertical_flip(true/False):表示是否进行垂直变换 默认值为True