繁体   English   中英

关于使用 C#(Xamarin 开发环境)从浮点矩阵转换为 Java.Lang.Object 的问题

[英]Issue regarding the cast from a float matrix to a Java.Lang.Object using C# (Xamarin development environment)

是否可以在 C# 中将多维浮点矩阵转换为 Java.Lang.Object?
我使用的神经网络(.tflite 格式)已正确加载,为了进行推理,请求两个 Java.Lang.Object 作为输入参数,以下称为 InputObj01 和 InputObj02:

  1. InputObj01 --> 要分类的输入。 在我的情况下矩阵维度:[1, 4000, 2]
  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;

根据您的需要,使用简单的循环可能更容易:

        float[][,] Input01 = new float[][,] { new float[4000, 2] };
        List<float[,]> newList = new List<float[,]>();

        foreach (float[,] array in Input01)
        {
                newList.Add(array);
        }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM