谁能在下面的代码中解释“ out = selfimages”的作用

问题描述

我无法理解,如果预测是通过正向方法计算的,那么为什么需要“输出=自我(图像)”及其作用。我对此代码有些困惑。

class MnistModel(nn.Module):
def __init__(self):
    super().__init__()
    self.linear = nn.Linear(input_size,num_classes)
    
def forward(self,xb):
    xb = xb.reshape(-1,784)
    out = self.linear(xb)
    return out

def training_step(self,batch):
    images,labels = batch 
    out = self(images)                  # Generate predictions
    loss = F.cross_entropy(out,labels) # Calculate loss
    return loss

def validation_step(self,labels = batch 
    out = self(images)                    # Generate predictions
    loss = F.cross_entropy(out,labels)   # Calculate loss
    acc = accuracy(out,labels)           # Calculate accuracy
    return {'val_loss': loss,'val_acc': acc}
    
def validation_epoch_end(self,outputs):
    batch_losses = [x['val_loss'] for x in outputs]
    epoch_loss = torch.stack(batch_losses).mean()   # Combine losses
    batch_accs = [x['val_acc'] for x in outputs]
    epoch_acc = torch.stack(batch_accs).mean()      # Combine accuracies
    return {'val_loss': epoch_loss.item(),'val_acc': epoch_acc.item()}

def epoch_end(self,epoch,result):
    print("Epoch [{}],val_loss: {:.4f},val_acc: {:.4f}".format(epoch,result['val_loss'],result['val_acc']))

model = MnistModel()

解决方法

在python中,自身是指您从类创建的实例(类似于Java和C ++中的 this )。实例是可调用的,这意味着,如果方法 _ call _ 被覆盖,则可以像函数本身一样调用它。

示例:

class A:
    def __init__(self):
        pass
    def __call__(self,x,y):
        return x + y

a = A()
print(a(3,4)) # Prints 7

在您的情况下,_ 调用 _方法在超类(nn.Module)中实现。 由于它是神经网络模块,因此需要输入占位符。 “输出” 是数据的占位符,该数据将把模块的输出转发到模型的下一层或模块。

在nn.Module类实例(以及从类继承的实例)的情况下,forward方法用作 call 方法。至少在针对nn.Module类定义的位置。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...