小编Sho*_*del的帖子

使用 CNN 和 pytorch 计算每个类别的准确率

我可以使用此代码计算每个时期后的准确性。但是,我想最后计算每个班级的准确性。我怎样才能做到这一点?我有两个文件夹 train 和 val 。每个文件夹有 7 个不同类别的 7 个文件夹。train 文件夹用于训练。否则 val 文件夹用于测试

  def train_model(model, criterion, optimizer, lr_scheduler, num_epochs=25):
    since = time.time()

    best_model = model
    best_acc = 0.0

    for epoch in range(num_epochs):
        print('Epoch {}/{}'.format(epoch, num_epochs - 1))
        print('-' * 10)

        # Each epoch has a training and validation phase
        for phase in ['train', 'val']:
            if phase == 'train':
                mode='train'
                optimizer = lr_scheduler(optimizer, epoch)
                model.train()  # Set model to training mode
            else:
                model.eval()
                mode='val'

            running_loss = 0.0
            running_corrects = 0

            counter=0
            # …
Run Code Online (Sandbox Code Playgroud)

classification loss training-data conv-neural-network pytorch

5
推荐指数
1
解决办法
8136
查看次数

在输出和目标标签之间使用 nn.Cross entropy

我用这个代码

训练模型的函数

def train():
  
  model.train()

  total_loss, total_accuracy = 0, 0
  
  # empty list to save model predictions
  total_preds=[]
  
  # iterate over batches
  for step,batch in enumerate(train_dataloader):
    
    # progress update after every 50 batches.
    if step % 50 == 0 and not step == 0:
      print('  Batch {:>5,}  of  {:>5,}.'.format(step, len(train_dataloader)))

    # push the batch to gpu
    #batch = [r for r in batch]
 
    sent_id, mask, labels = batch['input_ids'],batch['attention_mask'],batch['labels']
    print(6)
    print(sent_id)
    print(mask)
    print(labels)
    print(batch['input_ids'].shape)
    print(batch['attention_mask'].shape)
    print(batch['labels'].shape)

    # clear previously calculated gradients …
Run Code Online (Sandbox Code Playgroud)

python neural-network torch cross-entropy bert-language-model

2
推荐指数
1
解决办法
5877
查看次数