本教程分多个章节:
- 第一章:开发环境搭建:VS+libtorch和Qt+libtorch
- 第二章:张量的常规操作
- 第三章:简单的CNN, MLP, LSTM模型搭建
- 第四章:数据加载模块使用
- 第五章:分类模型搭建,训练和预测
- 第六章:分割模型搭建,训练和预测
- 第七章:目标检测模型搭建,训练和预测
- 第八章:总结和展望
本章讲述张量的常见操作,可以先初步了解,具体在设计损失函数等任务中可以用到。随时翻阅
张量初始化
libtorch(pytorch c++)的大多数api和pytorch保持一致,因此,libtorch中张量的初始化也和pytorch中的类似。本文介绍四种深度图像编程需要的初始化方法。
第一种,固定尺寸和值的初始化。
//常见固定值的初始化方式
auto b = torch::zeros({
3,4});
b = torch::ones({
3,4});
b= torch::eye(4);
b = torch::full({
3,4},10);
b = torch::tensor({
33,22,11});
pytorch中用[]表示尺寸,而cpp中用{}表示。zeros产生值全为0的张量。ones产生值全为1的张量。eye产生单位矩阵张量。full产生指定值和尺寸的张量。torch::tensor({})也可以产生张量,效果和pytorch的torch.Tensor([])或者torch.tensor([])一样。
第二种,固定尺寸,随机值的初始化方法
//随机初始化
auto r = torch::rand({
3,4});
r = torch::randn({
3, 4});
r = torch::randint(0, 4,{
3,3});
rand产生0-1之间的随机值,randn取正态分布N(0,1)的随机值,randint取[min,max)的随机整型数值。
第三种,从c++的其他数据类型转换而来
int</