#java #c# #xamarin #casting #tensorflow-lite
Вопрос:
Можно ли преобразовать многомерную матрицу с плавающей запятой в объект Java.Lang.в C#?
Используемая мной нейронная сеть (формат.tflite) загружена правильно, и для вывода в качестве входных параметров запрашиваются два Java.Lang.объекта, далее InputObj01 и InputObj02:
- InputObj01 —gt; Ввод, подлежащий классификации. В моем случае Размеры матрицы: [1, 4000, 2]
- InputObj02 —gt; Модель вывода. В моем случае Размер матрицы: [1, 4000]
Я не обнаружил проблем с преобразованием InputObj02 в Java.Lang.Object, выполнив следующие действия:
float[][] Input02 = new float[][]{ new float[4000] }; var InputObj02 = Arrays.FromArraylt;float[]gt;(Input02);
Но если я попытаюсь использовать ту же технику, чтобы получить InputObj01, следующим образом:
float[][,] Input01 = new float[][,]{ new float[4000, 2] }; var InputObj01 = Arrays.FromArraylt;float[,]gt;(Input01)
возникает следующее исключение:
**System.InvalidCastException:** 'Specified cast is not valid.'
Использование директивы:
using System; using Android.App; using Android.Content.PM; using Android.Runtime; using Android.OS; using Android.Widget; using System.IO; using Android.Content.Res; using Java.IO; using Java.Nio.Channels; using Java.Nio; using Xamarin.TensorFlow.Lite; using Java.Util;
Комментарии:
1. Привет @matpa_, я не получал от тебя вестей уже пару дней. Пожалуйста, дайте мне знать, если я могу чем-то помочь здесь.
2. @JessieZhang-MSFT Спасибо за ответ, но это решение не идеально в моей ситуации. По другим причинам мы перешли к собственной разработке, и эта точная проблема не была создана в среде Android и среде iOS.
Ответ №1:
Для ваших нужд может быть проще просто использовать простой цикл:
float[][,] Input01 = new float[][,] { new float[4000, 2] }; Listlt;float[,]gt; newList = new Listlt;float[,]gt;(); foreach (float[,] array in Input01) { newList.Add(array); }