关于使用 C#(Xamarin 开发环境)从浮点矩阵转换为 Java.Lang.Object 的问题
Posted
技术标签:
【中文标题】关于使用 C#(Xamarin 开发环境)从浮点矩阵转换为 Java.Lang.Object 的问题【英文标题】:Issue regarding the cast from a float matrix to a Java.Lang.Object using C# (Xamarin development environment) 【发布时间】:2021-12-19 13:06:56 【问题描述】:是否可以在 C# 中将多维浮点矩阵转换为 Java.Lang.Object? 我使用的神经网络(.tflite 格式)已正确加载并进行推理,请求两个 Java.Lang.Object 作为输入参数,以下为 InputObj01 和 InputObj02:
-
InputObj01 --> 要分类的输入。就我而言,矩阵尺寸:[1, 4000, 2]
InputObj02 --> 输出模型。就我而言,矩阵维度:[1, 4000]
我发现将 InputObj02 转换为 Java.Lang.Object 没有问题,使用以下步骤:
float[][] Input02 = new float[][] new float[4000] ;
var InputObj02 = Arrays.FromArray<float[]>(Input02);
但如果我尝试使用相同的技术来获取 InputObj01,方式如下:
float[][,] Input01 = new float[][,] new float[4000, 2] ;
var InputObj01 = Arrays.FromArray<float[,]>(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;
【问题讨论】:
嗨@matpa_,我已经有几天没有收到你的消息了。如果有什么我可以在这里提供帮助的,请告诉我。 @JessieZhang-MSFT 感谢您的回复,但这种解决方案在我的情况下并不理想。由于其他原因,我们已经转向原生开发,而在 Android 环境和 ios 环境中还没有出现这个确切的问题。 【参考方案1】:根据您的需要,使用简单的循环可能会更容易:
float[][,] Input01 = new float[][,] new float[4000, 2] ;
List<float[,]> newList = new List<float[,]>();
foreach (float[,] array in Input01)
newList.Add(array);
【讨论】:
以上是关于关于使用 C#(Xamarin 开发环境)从浮点矩阵转换为 Java.Lang.Object 的问题的主要内容,如果未能解决你的问题,请参考以下文章
C#使用Xamarin开发Android应用程序 -- 系列文章
使用 c# 从 Azure 存储帐户表中检索记录,同时使用 xamarin 开发跨平台应用程序给出错误