关于使用 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]

我发现将 In​​putObj02 转换为 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#开发移动APP-Xamarin入门1

C#开发移动应用之环境搭建

C#使用Xamarin开发Android应用程序 -- 系列文章

使用 c# 从 Azure 存储帐户表中检索记录,同时使用 xamarin 开发跨平台应用程序给出错误

如何从 Xamarin MacOS 开发中的另一个 C# 文件更新 ViewController.cs 中的“标签”?

使用Xamarin开发安装配置