我在 Pytorch Lightning 中设置了一个迁移学习 Resnet。该结构借自此 wandb 教程 https://wandb.ai/wandb/wandb-lightning/reports/Image-Classification-using-PyTorch-Lightning--VmlldzoyODk1NzY
并查看文档https://pytorch-lightning.readthedocs.io/en/latest/common/lightning_module.html
我对 defforward () 和 def Training_step() 方法之间的区别感到困惑。
最初在 PL 文档中,模型不会在训练步骤中调用,仅在前向调用中调用。但在训练步骤中也不会调用前向。我一直在数据上运行模型,输出看起来很合理(我有一个图像回调,我可以看到模型正在学习,并最终获得了良好的准确性结果)。但我担心,鉴于没有调用前向方法,该模型在某种程度上没有被实现?
型号代码为:
class TransferLearning(pl.LightningModule):
"Works for Resnet at the moment"
def __init__(self, model, learning_rate, optimiser = 'Adam', weights = [ 1/2288 , 1/1500], av_type = 'macro' ):
super().__init__()
self.class_weights = torch.FloatTensor(weights)
self.optimiser = optimiser
self.thresh = 0.5
self.save_hyperparameters()
self.learning_rate = learning_rate
#add metrics for tracking
self.accuracy = Accuracy()
self.loss= nn.CrossEntropyLoss()
self.recall = Recall(num_classes=2, threshold=self.thresh, average = av_type)
self.prec = Precision( num_classes=2, …
Run Code Online (Sandbox Code Playgroud)