2. configure_optimizers 3. train_dataloader 4. train_step 有了这4种方法的填充,我们可以使我们遇到的任何ML模型都得到很好的训练。任何需要超过这些方法的东西都可以很好地与Lightning中剩余的接口和回调配合。有关这些可用接口的完整列表,请查看Lightning文档。现在,让我们看看我们的轻量化模型。 初始化 首先,我们...
如下所示,就是一个简化的pytorch lightning逻辑部分,我们需要定义一个类CIFARModule,然后继承自pl.LightningModul。 这里包含三部分,模型相关的部分__init__和forword;优化器相关的部分configure_optimizers;模型训练逻辑部分training_step,validation_step和test_step。 - 模型相关部分:这部分一般涉及到一些超参数的设定,...
cross_entropy(self(x), y) tensorboard_logs = {'train_loss': loss} return {'loss': loss, 'log': tensorboard_logs} def configure_optimizers(self): return torch.optim.Adam(self.parameters(), lr=0.02) # 训练! train_loader = DataLoader(MNIST(os.getcwd(), train=True, download=True, ...
deftraining_step(self,batch,batch_idx):data,target=batch logits=self.forward(data)loss=F.nll_loss(logits,target)return{'loss':loss}defconfigure_optimizers(self):returntorch.optim.Adam(self.parameters(),lr=1e-3)# train your model model=CustomMNIST()trainer=Trainer(max_epochs=5,gpus=1) 如果...
def configure_optimizers(self): optimizer = torch.optim.Adam(self.parameters(), lr=1e-2) lr_scheduler = torch.optim.lr_scheduler.StepLR(optimizer, step_size=10, gamma=0.0001) return {"optimizer":optimizer,"lr_scheduler":lr_scheduler} ...
Optimizers (configure_optimizers) 例子: import pytorch_lightning as pl class LitModel(pl.LightningModule): def __init__(self): super().__init__() self.l1 = torch.nn.Linear(28 * 28, 10) def forward(self, x): return torch.relu(self.l1(x.view(x.size(0), -1))) ...
class MInterface(pl.LightningModule): 用作模型的接口,在__init__()函数中import你准备好的xxxmodel2.py,xxxmodel1.py这些模型。重写training_step方法,validation_step方法,configure_optimizers方法。 当大家在更改模型的时候只需要在对应的模块上进行更改即可,最后train.py主要功能就是读取参数,和调用dataModule和...
其中,必须实现的函数只有__init__() 、training_step()、configure_optimizers()。 3. 定义一个数据模型:LightningDataModule 通过定义LightningDataModule的子类,数据集分割、加载的代码将整合在一起,可以实现的方法有: 1classMyDataModule(LightningDataModule):2def__init__(self):3super().__init__()4defpr...
definit(self): 定义网络架构(model);def forward(self, x):定义推理、预测的前向传播; def training_step(self, batch, batch_idx): 定义train loop; def configure_optimizers(self): 定义优化器 因此,定义的是一个系统而不是单纯的模型。 至...
同理,在model_interface中建立class MInterface(pl.LightningModule):类,作为模型的中间接口。__init__()函数中import相应模型类,然后老老实实加入configure_optimizers,training_step,validation_step等函数,用一个接口类控制所有模型。不同部分使用输入参数控制。