package com.ruoyi.platform.domain;

import com.fasterxml.jackson.databind.PropertyNamingStrategy;
import com.fasterxml.jackson.databind.annotation.JsonNaming;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.util.Date;

@Data
@JsonNaming(PropertyNamingStrategy.SnakeCaseStrategy.class)
@ApiModel(description = "主动学习")
public class ActiveLearn {
    private Long id;

    @ApiModelProperty(value = "实验名称")
    private String name;

    @ApiModelProperty(value = "实验描述")
    private String description;

    @ApiModelProperty(value = "任务类型：classification或regression")
    private String taskType;

    @ApiModelProperty(value = "框架类型: sklearn, keras, pytorch")
    private String frameworkType;

    @ApiModelProperty(value = "代码配置")
    private String codeConfig;

    @ApiModelProperty(value = "预训练的模型")
    private String model;

    @ApiModelProperty(value = "模型文件路径")
    private String modelPy;

    @ApiModelProperty(value = "模型类名称")
    private String modelClassName;

    @ApiModelProperty(value = "分类算法")
    private String classifierAlg;

    @ApiModelProperty(value = "回归算法")
    private String regressorAlg;

    @ApiModelProperty(value = "dataset处理文件路径")
    private String datasetPy;

    @ApiModelProperty(value = "dataset类名")
    private String datasetClassName;

    @ApiModelProperty(value = "数据集")
    private String dataset;

    @ApiModelProperty(value = "数据量")
    private Integer dataSize;

    @ApiModelProperty(value = "镜像")
    private String image;

    @ApiModelProperty(value = "计算资源id")
    private Integer computingResourceId;

    @ApiModelProperty(value = "是否随机打乱")
    private Boolean shuffle;

    @ApiModelProperty(value = "训练集数据量")
    private Integer trainSize;

    @ApiModelProperty(value = "初始训练数据量")
    private Integer initialNum;

    @ApiModelProperty(value = "查询次数")
    private Integer queriesNum;

    @ApiModelProperty(value = "每次查询数据量")
    private Integer instancesNum;

    @ApiModelProperty(value = "查询策略:uncertainty_sampling, uncertainty_batch_sampling, max_std_sampling, expected_improvement, upper_confidence_bound")
    private String queryStrategy;

    @ApiModelProperty(value = "loss文件路径")
    private String lossPy;

    @ApiModelProperty(value = "loss类名")
    private String lossClassName;

    @ApiModelProperty(value = "多少轮查询保存一次模型参数")
    private Integer checkpointNum;

    @ApiModelProperty(value = "batch_size")
    private Integer batchSize;

    @ApiModelProperty(value = "epochs")
    private Integer epochs;

    @ApiModelProperty(value = "学习率")
    private Float lr;

    private String createBy;

    private String updateBy;

    private Date createTime;

    private Date updateTime;

    private Integer state;

    @ApiModelProperty(value = "状态列表")
    private String statusList;
}
