标签: pytorch

我可以使用逻辑索引或索引列表来切片张量?

我正在尝试使用列上的逻辑索引切片PyTorch张量.我想要与索引向量中的1值对应的列.切片和逻辑索引都是可能的,但它们是否可以一起使用?如果是这样,怎么样?我的尝试一直在抛出无益的错误

TypeError:使用ByteTensor类型的对象索引张量.唯一支持的类型是整数,切片,numpy标量和torch.LongTensor或torch.ByteTensor作为唯一的参数.

MCVE

期望的输出

C = torch.LongTensor([[1, 3], [4, 6]])
# 1 3
# 4 6
Run Code Online (Sandbox Code Playgroud)

仅对列进行逻辑索引

import torch
A_log = torch.ByteTensor([1, 0, 1]) # the logical index
B = torch.LongTensor([[1, 2, 3], [4, 5, 6]])
C = B[:, A_log] # Throws error
Run Code Online (Sandbox Code Playgroud)

我也试过使用索引列表

import torch
A_idx = torch.LongTensor([0, 2]) # the index vector
B = torch.LongTensor([[1, 2, 3], [4, 5, 6]])
C = B[:, A_idx] # Throws error
Run Code Online (Sandbox Code Playgroud)

如果向量大小相同,则逻辑索引有效

import torch
A_log = torch.ByteTensor([1, 0, 1]) # the logical …
Run Code Online (Sandbox Code Playgroud)

python matrix-indexing pytorch

7
推荐指数
2
解决办法
8719
查看次数

ValueError:浮点图像RGB值必须在0..1范围内.而使用matplotlib

我想要可视化神经网络层的权重.我正在使用pytorch.

import torch
import torchvision.models as models
from matplotlib import pyplot as plt

def plot_kernels(tensor, num_cols=6):
    if not tensor.ndim==4:
        raise Exception("assumes a 4D tensor")
    if not tensor.shape[-1]==3:
        raise Exception("last dim needs to be 3 to plot")
    num_kernels = tensor.shape[0]
    num_rows = 1+ num_kernels // num_cols
    fig = plt.figure(figsize=(num_cols,num_rows))
    for i in range(tensor.shape[0]):
        ax1 = fig.add_subplot(num_rows,num_cols,i+1)
        ax1.imshow(tensor[i])
        ax1.axis('off')
        ax1.set_xticklabels([])
        ax1.set_yticklabels([])

    plt.subplots_adjust(wspace=0.1, hspace=0.1)
    plt.show()
vgg = models.vgg16(pretrained=True)
mm = vgg.double()
filters = mm.modules
body_model = [i for i in mm.children()][0]
layer1 = …
Run Code Online (Sandbox Code Playgroud)

matplotlib deep-learning pytorch

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

如何在Pytorch中将1-d IntTensor转换为int

我得到了一维IntTensor,但我想将其转换为整数。我通过这种方法尝试:

print(dictionary[IntTensor.int()])
Run Code Online (Sandbox Code Playgroud)

但出现错误:

KeyError: Variable containing:
 423
[torch.IntTensor of size 1]
Run Code Online (Sandbox Code Playgroud)

谢谢〜

pytorch tensor

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

如何重复使用经过培训的fastai模型?

如何使用PyTorch上的fastai实现加载预训练模型?就像在SkLearn中一样,我可以使用pickle将模型转储到文件中,然后加载并稍后使用.在声明像bellow这样的学习实例之后,我使用了.load()方法来加载以前保存的权重:

arch=resnet34
data = ImageClassifierData.from_paths(PATH, tfms=tfms_from_model(arch, sz))
learn = ConvLearner.pretrained(arch, data, precompute=False)
learn.load('resnet34_test')
Run Code Online (Sandbox Code Playgroud)

然后预测图像的类:

trn_tfms, val_tfms = tfms_from_model(arch,100)
img = open_image('circle/14.png')
im = val_tfms(img)
preds = learn.predict_array(im[None])
print(np.argmax(preds))
Run Code Online (Sandbox Code Playgroud)

但它让我错误:

ValueError: Expected more than 1 value per channel when training, got input size [1, 1024]
Run Code Online (Sandbox Code Playgroud)

如果我使用此代码learn.fit(0.01, 3)而不是learn.load().我真正想要的是避免在我的应用程序中的训练步骤.

python scikit-learn deep-learning resnet pytorch

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

如何使用张量流服务为pytorch或sklearn模型提供服务

我发现了一些教程和帖子,其中仅说使用张量服务来提供张量流模型。在model.conf文件中,有一个参数model_platform,其中可以提及tensorflow或任何其他平台。但是我们如何以张量流的方式导出其他平台模型,以便可以通过张量流服务加载它。

scikit-learn tensorflow tensorflow-serving pytorch

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

如何有效地获取Torch张量中的最大值索引?

假定具有以下形状的火炬张量:

x = torch.rand(20, 1, 120, 120)
Run Code Online (Sandbox Code Playgroud)

我现在想要的是获取每个120x120矩阵的最大值的索引。为了简化问题,我将首先x.squeeze()使用shape [20, 120, 120]。然后,我想获取火炬张量,它是具有shape的索引列表[20, 2]

我该如何快速完成?

max indices pytorch

7
推荐指数
2
解决办法
6250
查看次数

如何在Google Colab上安装PyTorch v1.0.0 +?

PyTorch v1.0.0稳定版在7个月前宣布之后于2018年12月8日发布

我想为运行IPython内核的硬件优化版本。

如何在Google Colab上获取此版本?

pytorch google-colaboratory

7
推荐指数
2
解决办法
5904
查看次数

如何修改 Torch Hub 模型的下载路径

当我通过 Torch Hub 下载模型时,模型会自动以/home/me/.cache/torch.

如何修改此行为?

path pytorch

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

我们如何将 .pth 模型转换为 .pb 文件?

我已经通过使用 pytorch 获得了完整的模型,但是我想将 .pth 文件转换为 .pb,它可以在 Tensorflow 中使用。有没有人有一些想法?

tensorflow pytorch

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

在C++中将pytorch张量转换为opencv mat,反之亦然

我想在 C++ 中将 pytorch 张量转换为 opencv mat,反之亦然。我有这两个功能:

cv::Mat TensorToCVMat(torch::Tensor tensor)
{
    std::cout << "converting tensor to cvmat\n";
    tensor = tensor.squeeze().detach().permute({1, 2, 0});
    tensor = tensor.mul(255).clamp(0, 255).to(torch::kU8);
    tensor = tensor.to(torch::kCPU);
    int64_t height = tensor.size(0);
    int64_t width = tensor.size(1);
    cv::Mat mat(width, height, CV_8UC3);
    std::memcpy((void *)mat.data, tensor.data_ptr(), sizeof(torch::kU8) * tensor.numel());
    return mat.clone();
}

torch::Tensor CVMatToTensor(cv::Mat mat)
{
    std::cout << "converting cvmat to tensor\n";
    cv::cvtColor(mat, mat, cv::COLOR_BGR2RGB);
    cv::Mat matFloat;
    mat.convertTo(matFloat, CV_32F, 1.0 / 255);
    auto size = matFloat.size();
    auto nChannels = matFloat.channels();
    auto tensor …
Run Code Online (Sandbox Code Playgroud)

c++ memory opencv pytorch

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