首页 > 解决方案 > 从一维数组重新创建多维张量

问题描述

我正在尝试在 C# 中手动解码 Yolo 对象检测 ONNX 模型的输出。Netron 将输出描述如下:

type: float32[1,3,80,80,19]

但在 C# 代码中,我收到的模型输出是一维数组:

 float[364800]

和 364800 = 1 * 3 * 80 * 80 * 19

我的编程经验是使用 VB.NET 和少量 C#。我是 ML 和对象检测的新手,我没有太多使用张量或 Python 的经验,因此我正在尝试用 C# 构建一个解决方案。

有人可以指出我重建多维张量数组的正确方向,以便我可以迭代结果吗?一维数组中的数据如何存储?

我也想知道我是否会以艰难的方式去做。如果 .NET 世界中有某种张量操作工具,我会很高兴知道它。

谢谢你的帮助!

标签: c#arraystensoronnx

解决方案


您可以使用numpy在 python 中处理数组。安装

pip install numpy

为了将一维数组转换为多维数组,您可以使用以下方式进行转换:

oned_array = np.arange(6)
oned_array:
array([0,1,2,3,4,5])

multi_dimn_array = oned_array .reshape((3,2))
multi_dimn_array :
array([[0, 1],
       [2, 3],
       [4, 5]])

有用的资源:

  1. 麻木的
  2. 西皮

推荐阅读