Package: deepepochs
DeepEpochsPytorch深度学习模型训练工具。安装pipinstalldeepepochs使用数据要求训练集、验证集和测试集是torch.utils.data.Dataloader对象Dataloaer所构造的每个mini-batch数据（collate_fn返回值）是一个tuple或list，其中最后一个是标签如果训练中不需要标签，则需将最后一项置为None指标计算每个指标是一个函数有两个参数，分别为模型预测和数据标签返回值为当前mini-batch上计算的指标值或字典支持基于torchmetrics.functional定义指标实例importtorchfromtorchimportnnfromtorch.nnimportfunctionalasFfromtorchvision.datasetsimportMNISTfromtorchvisionimporttransformsfromtorch.utils.dataimportDataLoader,random_splitfromdeepepochsimportTrainer# 1. --- datasetsdata_dir='./datasets'transform=transforms.Compose([transforms.ToTensor(),transforms.Normalize((0.1307,),(0.3081,))])mnist_full=MNIST(data_dir,train=True,transform=transform,download=True)train_ds,val_ds=random_split(mnist_full,[55000,5000])test_ds=MNIST(data_dir,train=False,transform=transform,download=True)train_dl=DataLoader(train_ds,batch_size=32)val_dl=DataLoader(val_ds,batch_size=32)test_dl=DataLoader(test_ds,batch_size=32)# 2. --- modelchannels,width,height=(1,28,28)model=nn.Sequential(nn.Flatten(),nn.Linear(channels*width*height,64),nn.ReLU(),nn.Dropout(0.1),nn.Linear(64,64),nn.ReLU(),nn.Dropout(0.1),nn.Linear(64,10))# 3. --- optimizeropt=torch.optim.Adam(model.parameters(),lr=2e-4)# 4. --- traintrainer=Trainer(model,F.cross_entropy,opt,epochs=2)# 训练器trainer.fit(train_dl,val_dl)# 训练、验证trainer.test(test_dl)# 测试更多实例序号功能说明代码1基本使用examples/1-basic.py2Trainer、fit方法、test方法的常用参数examples/2-basic-params.py3模型性能评价指标的使用examples/3-metrics.py4Checkpoint与EarlyStopexamples/4-checkpoint-earlystop.py5寻找适当的学习率examples/5-lr-find.py6利用Tensorboad记录训练过程examples/6-logger.py7利用Tensorboard记录与可视化超参数examples/7-log-hyperparameters.py8分析、解释或可视化模型的预测效果examples/8-interprete.py9学习率调度examples/9-lr-schedule.py10使用多个优化器examples/10-multi-optimizers.py11在训练、验证、测试中使用多个Dataloaderexamples/11-multi-dataloaders.py12基于图神经网络的节点分类examples/12-node-classification.py13模型前向输出和梯度的可视化examples/13-weight-grad-visualize.py14自定义Callbackexamples/14-costomize-callback.py15通过TrainerBase定制train_step和evaluate_stepexamples/15-customize-steps-1.py16通过EpochTask定制train_step和eval_step和test_stepexamples/16-customize-steps-2.py17通过EpochTask定制stepexamples/17-costomize-steps-3.py18内置Patch的使用examples/18-use_patches.py19自定义Patchexamples/19-customize-patch.py20分布式训练、混合精度训练examples/20-accelerate.py21梯度累积examples/21-grad-accumulate.py定制方法1（示例14）第1步：继承deepepochs.Callback类，定制满足需要的Callback第2步：使用deepepochs.Trainer训练模型，将定制的Callback对象作为Trainer的callbacks参数方法2（示例15）第1步：继承deepepochs.TrainerBase类定制满足需要的Trainer，实现step、train_step、val_step、test_step或evaluate_step方法，它们的定义方法完全相同参数batch_x：     一个mini-batch的模型输入数据batch_y：     一个mini-batch的标签**step_args：可变参数字典，即EpochTask的step_args参数返回值为None或字典key：指标名称value：deepepochs.PatchBase子类对象，可用的Patch有（示例18）ValuePatch：    根据每个mini-batch指标均值（提前计算好）和batch_size，累积计算Epoch指标均值TensorPatch：   保存每个mini-batch的(preds, targets)，Epoch指标利用所有mini-batch的(preds, targets)数据重新计算MeanPatch：     保存每个batch指标均值，Epoch指标值利用每个mini-batch的均值计算一般MeanPatch与TensorPatch结果相同，但占用存储空间更小、运算速度更快不可用于计算'precision', 'recall', 'f1', 'fbeta'等指标ConfusionPatch：用于计算基于混淆矩阵的指标，包括'accuracy', 'precision', 'recall', 'f1', 'fbeta'等也可以继承PatchBase定义新的Patch，需要实现如下方法（示例19）PatchBase.add用于将两个Patch对象相加得到更大的Patch对象PatchBase.forward用于计算指标，返回指标值或字典第2步：调用定制Trainer训练模型。方法（示例16、17）第1步：继承deepepochs.EpochTask类，在其中定义step、train_step、val_step、test_step或evaluate_step方法它们的定义方式与Trainer中的*step方法相同step方法优先级最高，即可用于训练也可用于验证和测试（定义了step方法，其他方法就会失效）val_step、test_step优先级高于evaluate_step方法EpochTask中的*step方法优先级高于Trainer中的*step方法EpochTask的__ini__方法的**step_args会被注入*step方法的step_args参数第2步：使用新的EpochTask任务训练将EpochTask对象作为Trainer.fit中train_tasks和val_tasks的参数值，或者Trainer.test方法中tasks的参数值数据流图