You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将tch-rs中的tch::Tensor转换为Rust Vec?

将tch::Tensor转换为Rust Vec的可行方案

你原来的代码无法生效,是因为Vec::from并没有针对tch::Tensor实现对应的转换 trait。以下是正确的实现方式:

基础转换代码(CPU张量)

use tch::Tensor;

fn main() {
    let t: Tensor = Tensor::from_slice(&[1.1, 2.2, 3.3]);
    // 将张量转换为Vec<f32>,处理Result类型
    let v: Vec<f32> = t.into_vec().unwrap();
    println!("转换后的Vec: {:?}", v);
}

处理GPU张量

如果你的张量是在GPU上创建的,必须先将其转移到CPU再转换:

use tch::Tensor;

fn main() {
    // 假设张量在GPU上
    let t: Tensor = Tensor::from_slice(&[1.1, 2.2, 3.3]).to_device(tch::Device::Cuda(0));
    // 先转到CPU,再转换为Vec
    let v: Vec<f32> = t.to_cpu().into_vec().unwrap();
    println!("转换后的Vec: {:?}", v);
}

关键说明

  • into_vec::<T>方法会根据指定的类型T(比如f32、i32等)将张量数据转换为对应类型的Vec,返回Result<T, Error>,需要处理错误(示例中用unwrap快速处理,生产环境建议用match或?)。
  • 确保张量的数据类型和你要转换的Vec类型匹配,比如张量是f64类型时,要写成into_vec::<f64>(),否则会触发类型错误。

内容的提问来源于stack exchange,提问作者devdoer3

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 21:18:18