libtorch 常用api
2021-03-05 10:28
标签:开头 tst size names OWIN ocs library opencv3 efi 其实pytorch的函数libtorch都有,只是写法上有些出入。libtorch的官方文档链接: static Tensor at::full_like(const Tensor &self, Scalar fill_value, const TensorOptions &options = {}, c10::optional 打印的结果如下: 1.1 torch::rand (1,1,.,.) = (1,2,.,.) = (1,3,.,.) = 1.2 torch::empty 7.0374e+22 5.7886e+22 6.7120e+22 6.7331e+22 1.3 torch::ones 1 1 1 1 2.1 按列拼接 0.3551 0.7215 0.3603 2.2 按行拼接 0.0004 0.7852 0.4586 2.3 其他例子 [Variable[CPUFloatType] [5, 6]] libtorch 常用api 标签:开头 tst size names OWIN ocs library opencv3 efi 原文地址:https://www.cnblogs.com/yanghailin/p/12901586.html
https://pytorch.org/cppdocs/api/library_root.html
只是官方文档只是类似与函数申明,没有告诉干嘛的,只能通过函数名字猜了。比如我要一个一个函数和已知的一个torch::Tensor变量形状一样,只是填充指定的数值,我记得在哪里看到过的有个full开头的函数,然后我就搜素full,然后找到一个函数full_like好像是我需要的。(见0)
调试技巧:
torch::Tensor box_1 = torch::rand({5,4});
std::cout
CMakeLists.txt
cmake_minimum_required(VERSION 3.0 FATAL_ERROR)
project(main)
SET(CMAKE_BUILD_TYPE "Debug")
set(CMAKE_PREFIX_PATH "/data_2/everyday/0429/pytorch/torch")
find_package(Torch REQUIRED)
set(CMAKE_PREFIX_PATH "/home/yhl/software_install/opencv3.2")
find_package(OpenCV REQUIRED)
add_executable(main main.cpp)
target_link_libraries(main "${TORCH_LIBRARIES}")
target_link_libraries(main ${OpenCV_LIBS})
set_property(TARGET main PROPERTY CXX_STANDARD 11)
0.torch::full_like
然后就自己试:#include
0.8465 0.5771 0.4404
0.9805 0.8665 0.7807
[ Variable[CPUFloatType]{2,3} ]
1 1 1
1 1 1
[ Variable[CPUFloatType]{2,3} ]1.创建tensor torch::rand torch::empty torch::ones
torch::Tensor input = torch::rand({ 1,3,2,3 });
0.5943 0.4822 0.6663
0.7099 0.0374 0.9833
0.4384 0.4567 0.2143
0.3967 0.4999 0.9196
0.2467 0.5066 0.8654
0.7873 0.4758 0.3718
[ Variable[CPUFloatType]{1,3,2,3} ] torch::Tensor a = torch::empty({2, 4});
std::cout
6.7120e+22 1.8515e+28 7.3867e+20 9.2358e-01
[ Variable[CPUFloatType]{2,4} ] torch::Tensor a = torch::ones({2, 4});
std::cout
1 1 1 1
[ Variable[CPUFloatType]{2,4} ]2.拼接tensor torch::cat
torch::Tensor a = torch::rand({2,3});
torch::Tensor b = torch::rand({2,1});
torch::Tensor cat_1 = torch::cat({a,b},1);//按列拼接--》》前提是行数需要一样
std::cout
0.1188 0.4577 0.2201
[ Variable[CPUFloatType]{2,3} ]
0.5876
0.3040
[ Variable[CPUFloatType]{2,1} ]
0.3551 0.7215 0.3603 0.5876
0.1188 0.4577 0.2201 0.3040
[ Variable[CPUFloatType]{2,4} ]
注意:如果行数不一样会报如下错误
terminate called after throwing an instance of ‘std::runtime_error‘
what(): invalid argument 0: Sizes of tensors must match except in dimension 1. Got 2 and 4 in dimension 0 at /data_2/everyday/0429/pytorch/aten/src/TH/generic/THTensor.cpp:689 torch::Tensor a = torch::rand({2,3});
torch::Tensor b = torch::rand({1,3});
torch::Tensor cat_1 = torch::cat({a,b},0);
std::cout
0.1612 0.6524 0.7655
[ Variable[CPUFloatType]{2,3} ]
0.5999 0.5445 0.2152
[ Variable[CPUFloatType]{1,3} ]
0.0004 0.7852 0.4586
0.1612 0.6524 0.7655
0.5999 0.5445 0.2152
[ Variable[CPUFloatType]{3,3} ] torch::Tensor box_1 = torch::rand({5,4});
torch::Tensor score_1 = torch::rand({5,1});
torch::Tensor label_1 = torch::rand({5,1});
torch::Tensor result_1 = torch::cat({box_1,score_1,label_1},1);
result_1.print();