标签: pytorch

state_dict 中的意外键:“model”、“opt”

我目前正在使用 fast.ai 来训练图像分类器模型。

data = ImageDataBunch.single_from_classes(path, classes, ds_tfms=get_transforms(), size=224).normalize(imagenet_stats)
learner = cnn_learner(data, models.resnet34)

learner.model.load_state_dict(
    torch.load('stage-2.pth', map_location="cpu")
)
Run Code Online (Sandbox Code Playgroud)

这导致:

torch.load('stage-2.pth', map_location="cpu") 文件“/usr/local/lib/python3.6/site-packages/torch/nn/modules/module.py”,第 769 行,在load_state_dict 自我。name , "\n\t".join(error_msgs))) RuntimeError: Error(s) in loading state_dict for Sequential:

...

state_dict 中的意外键:“model”、“opt”。

我环顾四周并尝试使用以下解决方案:

# original saved file with DataParallel
state_dict = torch.load('stage-2.pth', map_location="cpu")
# create new OrderedDict that does not contain `module.`
from collections import OrderedDict
new_state_dict = OrderedDict()
for k, v in state_dict.items():
    name = k[7:] # remove `module.`
    new_state_dict[name] = v …
Run Code Online (Sandbox Code Playgroud)

python deep-learning pytorch fast-ai

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

从最后一个隐藏层 Pytorch Resnet18 提取特征

我正在使用Oxford Pet 数据集和预训练的 Resnet18 CNN实现一个图像分类器。该数据集由 37 个类别组成,每个类别约有 200 张图像。

我想使用 CNN 作为特征提取器来对宠物进行分类,而不是使用 CNN 的最终 fc 层作为输出来进行预测。

对于每个图像,我想从最后一个隐藏层(应该1000 维输出层之前)获取特征。我的模型正在使用 Relu 激活,所以我应该在 ReLU 之后获取输出(因此所有值都将为非负)

这是代码(遵循Pytorch 上的迁移学习教程):

加载数据中

normalize = transforms.Normalize(mean=[0.485, 0.456, 0.406],
                                std=[0.229, 0.224, 0.225])


image_datasets = {"train": datasets.ImageFolder('images_new/train', transforms.Compose([
        transforms.RandomResizedCrop(224),
        transforms.RandomHorizontalFlip(),
        transforms.ToTensor(),
        normalize
    ])), "test": datasets.ImageFolder('images_new/test', transforms.Compose([
        transforms.Resize(256),
        transforms.CenterCrop(224),
        transforms.ToTensor(),
        normalize
    ]))
               }

dataloaders = {x: torch.utils.data.DataLoader(image_datasets[x], batch_size=4,
                                             shuffle=True, num_workers=4, pin_memory=True)
              for x in ['train', 'test']}

dataset_sizes = {x: len(image_datasets[x]) for x in ['train', 'test']} …
Run Code Online (Sandbox Code Playgroud)

python conv-neural-network pytorch

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

如何在 Pytorch 中处理大型 JSON 文件?

我正在研究时间序列问题。不同的训练时间序列数据存储在一个 30GB 的大型 JSON 文件中。在 tensorflow 中,我知道如何使用 TF 记录。pytorch 中是否有类似的方法?

time-series deep-learning pytorch

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

如何在 Pytorch 中使用 KNN、随机森林模型?

这似乎是一个 XY 问题,但最初我有大量数据并且我无法在给定的资源中进行训练(RAM 问题)。所以我想我可以使用batch的功能Pytorch。但我想使用除深度学习之外的 KNN、随机森林、聚类等方法。那么有可能吗,或者我可以在 Pytorch 中使用 scikit 库吗?

python-3.x scikit-learn pytorch

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

RuntimeError: cuda runtime error (35) : CUDA 驱动程序版本对于 Torch/csrc/cuda/Module.cpp:51 中的 CUDA 运行时版本不足

当我尝试加载 pytorch 检查点时:

checkpoint = torch.load(pathname)
Run Code Online (Sandbox Code Playgroud)

我懂了:

RuntimeError: cuda runtime error (35) : CUDA 驱动程序版本对于 Torch/csrc/cuda/Module.cpp:51 中的 CUDA 运行时版本不足

我用可用的 GPU 创建了检查点,但现在只有 CPU 可用。

如何加载检查点?

python checkpointing pytorch

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

Unexpected and missing keys in state_dict when converting pytorch to onnx

当我将“.pth”模型从 PyTorch 转换为 ONNX 时,Unexpected keys and missing keys会发生类似错误。

这是我的模型:

    1 import torch
    2 import torch.onnx
    3 from mmcv import runner
    4 import torch.`enter code here`nn as nn
    5 from mobilenet import MobileNet
    6 # A model class instance (class not shown)
    7 md=MobileNet(1,2)
    8 model = md
    9 device_ids = [0,2,6,7,8]
    10 model = nn.DataParallel(model,device_ids)
    11 #torch.backends.cudnn.benchmark = True
    12 # Load the weights from a file (.pth usually)
    13 runner.load_checkpoint(model,'../mmdetection-        master/work_dmobile/faster_rcnn_r50_fpn_1x/epoch_60.pth')
    14 #model = MMDataParallel(model, device_ids=[0]) …
Run Code Online (Sandbox Code Playgroud)

artificial-intelligence deep-learning pytorch onnx

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

将整数转换为二进制位的pytorch张量

给定一个数字和一个编码长度,如何将数字转换为张量的二进制表示?

例如,给定 number6和 width 8,我怎样才能获得张量:

(0, 0, 0, 0, 0, 1, 1, 0)
Run Code Online (Sandbox Code Playgroud)

pytorch

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

如何在训练 CNN 时为 nn.Linear 层选择参数?

我正在尝试训练 CNNFashion-MNIST使用Conv2dMaxpoolLinear层对数据中的图像进行分类。我in_features = 12*4*4nn.Linear层中遇到了如下所述的代码。

我能否获得有关如何in_features为 nn.Linear 层选择参数的帮助?

class Network(nn.Module):
    def __init__(self):
        super(Network, self).__init__()
        self.conv1 = nn.Conv2d(in_channels=1, out_channels=6, kernel_size=5)
        self.conv2 = nn.Conv2d(in_channels=6, out_channels=12, kernel_size=5)

        self.fc1 = nn.Linear(in_features=12*4*4, out_features=120)
        self.fc2 = nn.Linear(in_features=120, out_features=60)
        self.out = nn.Linear(in_features=60, out_features=10)
Run Code Online (Sandbox Code Playgroud)

python-3.x conv-neural-network pytorch

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

RuntimeError: Given groups=1, weight of size [64, 3, 3, 3], 预期输入 [4, 5000, 5000, 3] 有 3 个通道,但得到 5000 个通道

所以,我有一个 U-Net 模型,我将 5000x5000x3 的图像输入到模型中,然后我得到了上面的错误。

所以这是我的模型。

import torch
import torch.nn as nn


def double_conv(in_channels, out_channels):
    return nn.Sequential(
        nn.Conv2d(in_channels, out_channels, 3, padding=1),
        nn.ReLU(inplace=True),
        nn.Conv2d(out_channels, out_channels, 3, padding=1),
        nn.ReLU(inplace=True)
    )


class UNeT(nn.Module):
    def __init__(self, n_class):
        super().__init__()
        self.dconv_down1 = double_conv(3, 64)
        self.dconv_down2 = double_conv(64, 128)
        self.dconv_down3 = double_conv(128, 256)
        self.dconv_down4 = double_conv(256, 512)
        self.maxpool = nn.MaxPool2d(2)
        self.upsample = nn.Upsample(scale_factor=2, mode='bilinear',
                                    align_corners=True)
        self.dconv_up3 = double_conv(256 + 512, 256)
        self.dconv_up2 = double_conv(128 + 256, 128)
        self.dconv_up1 = double_conv(128 + 64, 64)
        self.conv_last = nn.Conv2d(64, n_class, …
Run Code Online (Sandbox Code Playgroud)

python image-processing computer-vision deep-learning pytorch

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

PyTorch Dimension 超出范围(预期在 [-1, 0] 范围内,但得到 1)

我有以下 PyTorch 张量:

predicted = torch.tensor([4, 4, 4, 1, 1, 1, 1, 1, 1, 4, 4, 1, 1, 1, 4, 1, 1, 4, 0, 4, 4, 1, 4, 1])

target    = torch.tensor([3, 0, 0, 1, 1, 0, 1, 1, 1, 3, 2, 4, 1, 1, 1, 0, 1, 1, 2, 1, 1, 1, 1, 1,])
Run Code Online (Sandbox Code Playgroud)

我想用以下几行计算它们之间的交叉熵损失(作为逻辑回归实现的一部分):

loss = nn.CrossEntropyLoss()
computed_loss = loss(predicted, target)
Run Code Online (Sandbox Code Playgroud)

但是,当我的代码运行时,我得到以下IndexError

IndexError: Dimension out of range (expected to be in range of [-1, …
Run Code Online (Sandbox Code Playgroud)

machine-learning python-3.x deep-learning pytorch

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