【CppFlow2 Tensor变化】

实现,CppFlow2是一个Tensorflow C API的套娃

使用这个框架我本来是拒绝的,但是遇到

TensorFlow 2.4.0 C-API 函数 TF_StringDecode、TF_StringEncode 和 TF_StringEncodedSize 不再被使用,现已移除;关于 C 语言中的字符串访问/修改,请参见core/platform/ctstring.h。

这个消息后,原本的一个项目用的是CppFlow1最高支持到TF2.3.1,这就拉夸了,于是研究了一下CppFlow2,这个阔以支持到最新的TF2.4.0,使用了一下跑通后,发现,嗯嗯嗯,真香~比原版的直接使用C API方便多了

弄了好久终于弄出自定义输入vector类型的GPU张量了
需要一点小技巧,目前没有更好的办法,这里仅仅是抛砖引玉

原本的cppflow::fill这个函数只能生成批量是x的Gpu张量,各个数字不能改
而cppflow::tensor虽然可以自定义,但是却是Cpu张量

 std::vector<int32_t>ids = { 1,17,61,2,17,61,2,14,136,2,23,116,2,6,36,1,218 };
    int64_t dim = static_cast<int64_t>(ids.size());
    printf("---------------------------------------------------\n");
    printf("input dim len:%d", dim);
    //std::vector<int> _data = { 1,2,3 };
    auto input_ids = cppflow::tensor(ids, { dim });
    auto zero = cppflow::fill({ dim }, (int32_t)0);
    input_ids = cppflow::add(input_ids, zero);
    std::cout << input_ids << std::endl;

通过以上代码,我把cpu张量加一个全〇张量后,获得一个值大小和原来一致的Gpu张量了

另外,获取张量的shape好像也和官方教程有所出路,
我实验的结果是:

   auto shape_tensor=AuData.shape();
    auto shape = shape_tensor.get_data<int64_t>();

这里shape数组应该用的int64_t而不是int32_t,否则闪退。获取的shape变量为一个vector<int64_t>,非常友好了!其他的张量维度变化、类型变化官方教程都有,不再细述

PS:Ads时间,大家可以加群一起探讨一下各种深度学习或者图形框架,集思广益,群号:558174476(游戏与人工智能生命体)

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值