前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >C++中使用pytorch保存的tensor

C++中使用pytorch保存的tensor

作者头像
王云峰
发布于 2023-10-21 08:27:50
发布于 2023-10-21 08:27:50
81700
代码可运行
举报
运行总次数:0
代码可运行

概述

最近在学习Libtorch——即Pytorch的C++版本,需要使用 Pytorch 导出的 tensor 以便对模型进行 debug。下面是转换代码,总体原理是将 tensor 转换为二进制数据,再在 C++ 里面读入。

下面是 Pytorch 中的导出 tensor 示例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import io

import torch


def save_tensor(device):
    my_tensor = torch.rand(3, 3).to(device);
    print("[python] my_tensor: ", my_tensor)
    f = io.BytesIO()
    torch.save(my_tensor, f, _use_new_zipfile_serialization=True)
    with open('my_tensor_%s.pt' % device, "wb") as out_f:
        # Copy the BytesIO stream to the output file
        out_f.write(f.getbuffer())


if __name__ == '__main__':
    save_tensor('cpu')

这里以导出 cpu tensor 为例,cuda tensor 也是同理。

在 C++ 中的调用示例如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#include <iostream>
#include <torch/torch.h>

std::vector<char> get_the_bytes(std::string filename) {
    std::ifstream input(filename, std::ios::binary);
    std::vector<char> bytes(
        (std::istreambuf_iterator<char>(input)),
        (std::istreambuf_iterator<char>()));

    input.close();
    return bytes;
}

int main()
{
    std::vector<char> f = get_the_bytes("my_tensor_cpu.pt");
    torch::IValue x = torch::pickle_load(f);
    torch::Tensor my_tensor = x.toTensor();
    std::cout << "[cpp] my_tensor: " << my_tensor << std::endl;

    return 0;
}

注意事项:

  1. torch的Python和C++版本需要保持一致,否则转换可能不成功.

题外话

最近在学习Libtorch——即Pytorch的C++版本,发现使用起来异常的丝滑,写C++有了Python的体验,妙不可言。 后面会更新一些关于libtorch使用的文章,敬请关注。

参考

  1. https://discuss.pytorch.org/t/how-to-load-python-tensor-in-c/88813
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-03-212,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
用javascript实现轮播图效果
程序媛夏天
2024/01/18
2750
用三种方式实现轮播图
顾名思义,轮播图就是实现图片的轮换播放效果。先显示一张图片,一定的时间,让这张图片消失,下一张图片显示。让它们实现跟淘宝首页一样的广告轮播效果。
微醺
2019/01/17
2.8K0
情人节程序员用HTML网页表白【七夕活动邀请函手机动态模板】 HTML5七夕情人节表白网页源码 HTML+CSS+JavaScript
1 网页简介:基于 HTML+CSS+JavaScript 制作七夕情人节表白网页、生日祝福、七夕告白、 求婚、浪漫爱情3D相册、炫酷代码 ,快来制作一款高端的表白网页送(他/她)浪漫的告白,制作修改简单,可自行更换背景音乐,文字和图片即可使用
IT司马青衫
2022/08/20
6760
情人节程序员用HTML网页表白【七夕活动邀请函手机动态模板】 HTML5七夕情人节表白网页源码 HTML+CSS+JavaScript
微信小程序--层叠轮播图
效果展示 Demo代码 wxml <view class="selection_cards" bindtouchstart="touchstart" bindtouchmove="touchmove"
海轰Pro
2021/04/09
1.7K0
微信小程序--层叠轮播图
JS-运动基础——案例应用:淡入淡出效果
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>淡入淡出</title> <style type="text/css"> .div { width: 100px; height: 100px; background-color: red;
xing.org1^
2018/05/17
1.8K0
原生js实现淡入淡出轮播图效果
程序媛夏天
2024/01/18
5630
原生js实现淡入淡出轮播图效果
实战SSM_O2O商铺_40【前端展示】首页轮播图和一级商铺View层的实现
在完成了后端 实战SSM_O2O商铺_39【前端展示】首页轮播图和一级商铺Dao+Service+Controller层的开发 的开发之后,我们来实现View层的部分
小小工匠
2021/08/17
2710
使用swiper制作拓展效果(跑马灯)
Swiper是纯javascript打造的滑动特效插件,面向手机、平板电脑等移动终端。
天天_哥
2018/09/29
4.1K0
原生JS实现呼吸轮播图
今天给大家分享一个用原生JS实现的呼吸轮播图,效果如下: 以下是代码实现,欢迎大家复制粘贴。 <!DOCTYPE html> <html> <head> <meta charset="ut
越陌度阡
2020/11/26
9.5K0
原生JS实现呼吸轮播图
Swiper做轮播图
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" conten
明知山
2020/09/03
1.4K0
Swiper实现全屏视觉差轮播
Swiper作为当代流行的js框架,非常受到青睐,这里演示swiper在pc端全屏视觉轮播的效果,这也是pc端常用的一种特性
用户3159471
2018/09/13
3.6K0
图片轮播(淡入淡出)--JS原生和jQuery实现
图片轮播(淡入淡出)--js原生和jquery实现 图片轮播有很多种方式,这里采用其中的 淡入淡出形式 js原生和jQuery都可以实现,jquery因为封装了很多用法,所以用起来就简单许多,转换成js使用,其实也就是用js原生模拟出这些用法。 但不管怎样,构造一个最基本的表现层是必须的
书童小二
2018/09/03
24.6K0
图片轮播(淡入淡出)--JS原生和jQuery实现
swiper.animate实现轮播展示动画效果
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <title>Swiper demo</title> <meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1, maximum-scale=1"> <link rel="stylesheet" href="https://cdn.bootc
明知山
2020/09/03
1.7K0
get几个小技能:轮播图插件、进度条插件、筛选过滤插件
最近参加了一个网页设计大赛,趁这个机会做了一个个人简历的网页:点击欣赏 用到了许多有趣的东西们今天分享一下。
不愿意做鱼的小鲸鱼
2022/09/24
1.8K0
get几个小技能:轮播图插件、进度条插件、筛选过滤插件
轮播图技术实战
张哥编程
2024/12/13
1220
Vue实现轮播效果
文章转载自:Swiper中文网 [https://www.swiper.com.cn]
Li_XiaoJin
2022/06/10
1.1K0
Vue实现轮播效果
JavaScript 轮播图:让网页焕发生机
欢迎大家来到本篇博客,今天我们将一起探讨如何使用 JavaScript 创建一个精美的轮播图。轮播图是现代网站设计的关键元素之一,它能够使网页更加吸引人,提高用户体验。无需担心,本文将面向基础小白,从头开始解释每一步。
繁依Fanyi
2023/11/03
1.3K0
javascript写淡入淡出效果的轮播图
更多内容请见原文,文章转载自:https://blog.csdn.net/weixin_44519496/article/details/118599165
马克社区
2022/04/15
7180
第54天:原生js实现轮播图效果
一系列的大小相等的图片平铺,利用CSS布局只显示一张图片,其余隐藏。通过计算偏移量利用定时器实现自动播放,或通过手动点击事件切换图片。
半指温柔乐
2018/09/11
7K0
第54天:原生js实现轮播图效果
css循环淡入淡出播放(二)
之前在docusaurus实现了css的循环淡入淡出播放,发现效果有一点局限,遂还是用js结合css实现了,目前代码为:
阿超
2025/02/08
1820
推荐阅读
相关推荐
用javascript实现轮播图效果
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档