[教训贴]Pytorch中使用tensorboard报错NotImplementedError: Got <class ‘dict‘>, but numpy array, torch tensor

报错信息:
NotImplementedError: Got <class ‘dict’>, but numpy array, torch tensor, or caffe2 blob name are expected.
报错信息

报错原因:
writer.add_scalars要加“S”
单个变量的可视化是不用加s的,例如:

  • writer.add_scalar(‘test_acc’, test_acc, test_step)
    多个变量共同可视化就要加S,例如:
  • writer.add_scalars(
    ‘epoch_loss’,
    {
    ‘train’: np.mean(train_loss_lis),
    ‘test’: np.mean(test_loss_lis)
    },
    epoch
    )
    最终生成的效果图:
    在这里插入图片描述
    分析:就是自己太不仔细了,也太依赖编译器,出来啥就点啥了
PyTorch使用预训练的`cat_dog_classifier.pth`模型,可以按照以下步骤进行: 1. **导入必要的库**: 首先,需要导入PyTorch和其他必要的库。 2. **定义模型结构**: 确保定义了与预训练模型相同的模型结构。 3. **加载预训练模型**: 使用`torch.load`函数加载预训练模型的参数。 4. **设置模型为评估模式**: 使用`model.eval()`将模型设置为评估模式。 5. **进行预测**: 使用模型进行预测。 以下是一个示例代码: ```python import torch import torch.nn as nn from torchvision import models, transforms from PIL import Image import numpy as np # 定义模型结构 class CatDogClassifier(nn.Module): def __init__(self): super(CatDogClassifier, self).__init__() self.model = models.resnet18(pretrained=False) num_ftrs = self.model.fc.in_features self.model.fc = nn.Linear(num_ftrs, 2) # 假设是二分类问题 def forward(self, x): return self.model(x) # 初始化模型 model = CatDogClassifier() # 加载预训练模型 model.load_state_dict(torch.load('cat_dog_classifier.pth', map_location=torch.device('cpu'))) model.eval() # 定义图像预处理步骤 preprocess = transforms.Compose([ transforms.Resize(256), transforms.CenterCrop(224), transforms.ToTensor(), transforms.Normalize( mean=[0.485, 0.456, 0.406], # 根据预训练模型使用的均值进行调整 std=[0.229, 0.224, 0.225] # 根据预训练模型使用的标准差进行调整 ) ]) # 加载并预处理图像 img = Image.open("path_to_your_image.jpg") img_t = preprocess(img) batch_t = torch.unsqueeze(img_t, 0) # 进行预测 with torch.no_grad(): out = model(batch_t) _, predicted = torch.max(out, 1) print('Predicted:', predicted.item()) ``` 在上述代码中,我们首先定义了一个与预训练模型相同的模型结构,然后加载了预训练的模型参数。接着,我们对输入图像进行了预处理,并使用模型进行了预测。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值