Воссоздание многомерного тензора из одномерного массива

#c# #arrays #tensor #onnx

#c# #массивы #тензор #onnx

Вопрос:

Я пытаюсь вручную декодировать выходные данные ONNX-модели обнаружения объектов Yolo на C #. Netron описывает результат следующим образом:

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

Но в коде C # вывод модели, который я получаю, представляет собой одномерный массив:

  float[364800]
  

и 364800 = 1 * 3 * 80 * 80 * 19

Мой опыт программирования был с VB.NET и немного C #. Я новичок в ML и обнаружении объектов, и у меня нет большого опыта работы с тензорами или Python, поэтому я пытаюсь создать решение на C #.

Может ли кто-нибудь указать мне правильное направление при восстановлении многомерного тензорного массива, чтобы я мог перебирать результаты? Как будут храниться данные в одномерном массиве?

Также я задавался вопросом, могу ли я делать это сложным путем. Если в .NET world Я был бы рад узнать об этом.

Спасибо за любую помощь!

Ответ №1:

Вы можете использовать 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. Numpy
  2. Scipy

Комментарии:

1. Спасибо, но я не понимаю, как это применимо в C #, это библиотеки в Python