例如,我有一个张量:
tensor = torch.rand(12, 512, 768)
Run Code Online (Sandbox Code Playgroud)
我得到了一个索引列表,说它是:
[0,2,3,400,5,32,7,8,321,107,100,511]
Run Code Online (Sandbox Code Playgroud)
我希望从给定索引列表的维度 2 上的 512 个元素中选择 1 个元素。然后张量的大小将变为(12, 1, 768)。
有办法做到吗?
我有一个二维张量,我想像这个例子一样按第一维排序:
a = torch.FloatTensor(
[[5, 5],
[5, 3],
[3, 5],
[6, 4],
[3, 7]])
Run Code Online (Sandbox Code Playgroud)
排序后我期望这个结果:
a = torch.FloatTensor(
[[3, 5],
[3, 7],
[5, 3],
[5, 5],
[6, 4]])
Run Code Online (Sandbox Code Playgroud)
可以在pytorch中做到这一点吗?我知道可以在 numpy 中做到这一点,但我想使用火炬在 GPU 中做到这一点。
我已经训练了 keras 模型并使用mmdnn对其进行了转换。然后我尝试在 C++ 代码中使用它:
#include <iostream>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <torch.h>
int main()
{
cv::Mat image;
image= cv::imread("test_img.png", cv::IMREAD_GRAYSCALE); // Read the file
try
{
torch::jit::script::Module module;
module = torch::jit::load("my_model.pth");
torch::IntArrayRef input_dim = std::vector<int64_t>({ 1, 2, 256, 256});
cv::Mat input_img;
image.convertTo(input_img, CV_32FC3, 1 / 255.0);
torch::Tensor x = torch::from_blob(input_img.data, { 1, 2, 256, 256 }, torch::kFloat);
torch::NoGradGuard no_grad;
auto output = module.forward({ x });
float* data = static_cast<float*>(output.toTensor().data_ptr());
cv::Mat output_img = cv::Mat(256, 256, CV_32FC3, data);
cv::imwrite("output_img.png", …Run Code Online (Sandbox Code Playgroud) 我目前正在使用该has_storage()方法来检查张量是否为空,但我想知道除此之外还有什么更好的方法!以及除了初始化torch::Tensor总是有一个存储而空的没有的事实之外,使用这个是否有任何影响!
在 pytorch NLLLoss文档中,ignore_index 的默认值是 -100 而不是通常的None,有什么特殊原因吗?似乎任何负值都是等价的。
顺便说一句,我想忽略索引的原因可能是什么?谢谢!
我正在尝试使用 Pytorch 训练我自己的对象检测模型。但我总是遇到这个错误。我尝试更改火炬版本,但这没有帮助。
我的软件包:torchvision-0.11.1 和 torch-1.10.0
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-10-9e52b782b448> in <module>()
4 for epoch in range(num_epochs):
5 # training for one epoch
----> 6 train_one_epoch(model, optimizer, data_loader, device, epoch, print_freq=10)
7 # update the learning rate
8 lr_scheduler.step()
/content/engine.py in train_one_epoch(model, optimizer, data_loader, device, epoch, print_freq)
21 warmup_iters = min(1000, len(data_loader) - 1)
22
---> 23 lr_scheduler = torch.optim.lr_scheduler.LinearLR(
24 optimizer, start_factor=warmup_factor, total_iters=warmup_iters
25 )
AttributeError: module 'torch.optim.lr_scheduler' has no attribute 'LinearLR'
Run Code Online (Sandbox Code Playgroud) 我意识到torch_geometric 库提供了全局池化层和池化层,但我真的不明白这两个层在应用于图神经网络时有什么区别?
我有一个使用 Pytorch 创建的带有权重的.pth文件。我如何才能查看该文件中的权重?
我尝试加载和查看此代码,但它不起作用(作为新手,我可能完全错了)-
import torch
import torchvision.models as models
torch.save('weights\kharif_crops_final.pth')
models.load_state_dict(torch.load('weights\kharif_crops_final.pth'))
models.eval()
print(models)
Run Code Online (Sandbox Code Playgroud) 我试图使用进行语义分割Detectron2,但是当我运行程序时出现了一些棘手的错误。看来我的环境可能存在一些问题。
有谁知道如何修理它?
ImportError:无法从“torch.fx._symbolic_trace”导入名称“is_fx_tracing”(/home/eric/anaconda3/envs/detectron_env/lib/python3.9/site-packages/torch/fx/_symbolic_trace.py)
我有以下NN架构:
第1部分:
nn.Sequential {
[input -> (1) -> (2) -> (3) -> (4) -> (5) -> (6) -> (7) -> output]
(1): nn.TemporalConvolution
(2): nn.TemporalMaxPooling
(3): nn.TemporalConvolution
(4): nn.TemporalMaxPooling
(5): nn.Reshape(14336)
(6): nn.Dropout(0.500000)
(7): nn.Linear(14336 -> 128)
}
Run Code Online (Sandbox Code Playgroud)
第2部分:
nn.Sequential {
[input -> (1) -> (2) -> (3) -> output]
(1): nn.Linear(4 -> 8)
(2): nn.ReLU
(3): nn.Linear(8 -> 4)
}
Run Code Online (Sandbox Code Playgroud)
我想做的是使用这两部分的输出作为另一部分的输入:
nn.Sequential {
[input -> (1) -> (2) -> (3) -> (4) -> (5) -> (6) -> output]
(1): …Run Code Online (Sandbox Code Playgroud) torch ×10
pytorch ×7
python ×6
c++ ×2
tensor ×2
libtorch ×1
prediction ×1
sorting ×1
torchvision ×1