【问题标题】:TFException: Expects arg[0] to be string but float is provided (Unity3d)TFException:期望 arg[0] 为字符串,但提供了浮点数 (Unity3d)
【发布时间】:2018-06-10 08:51:22
【问题描述】:

我正在使用来自 TensorFlow 的语音命令模型示例和 Unity3d 中的变量:

string WAV_INPUT = "wav_data";
        string SOFTMAX_NAME = "labels_softmax";
        string[] outputScoresNames = new string[] { SOFTMAX_NAME };

然后像这样向模型添加输入:

 private void recognize(float[] audioFile)
    {
        //labels_softmax:0 output name 
        //labels wav_data:0 input name from model 
        string WAV_INPUT = "wav_data";
        string SOFTMAX_NAME = "labels_softmax";
        string[] outputScoresNames = new string[] { SOFTMAX_NAME };

        int how_many_labels = 4;
        string[] labels = new string[] { "_silence_" , "_unknown_", "stop","go"};

         TextAsset model = Resources.Load("GoStop") as TextAsset;
         TFGraph  graph = new TFGraph();
         graph.Import(model.bytes);

        TFSession session = new TFSession(graph);

        var runner = session.GetRunner();

        runner.AddInput(graph[WAV_INPUT][0], audioFile);
        runner.AddTarget(outputScoresNames);
        runner.Run();
       // float[] recurrent_tensor = runner.Run()[0].GetValue() as float[];

    }

给softmax的例外是这样的:

TFException: Expects arg[0] to be string but float is provided
TensorFlow.TFStatus.CheckMaybeRaise (TensorFlow.TFStatus incomingStatus, System.Boolean last) (at <1fe2de69842a4a4ba15256b83cca05f3>:0)
TensorFlow.TFSession.Run (TensorFlow.TFOutput[] inputs, TensorFlow.TFTensor[] inputValues, TensorFlow.TFOutput[] outputs, TensorFlow.TFOperation[] targetOpers, TensorFlow.TFBuffer runMetadata, TensorFlow.TFBuffer runOptions, TensorFlow.TFStatus status) (at <1fe2de69842a4a4ba15256b83cca05f3>:0)
TensorFlow.TFSession+Runner.Run (TensorFlow.TFStatus status) (at <1fe2de69842a4a4ba15256b83cca05f3>:0)
tensor.recognize (System.Single[] audioFile) (at Assets/tensor.cs:51)
tensor.Start () (at Assets/tensor.cs:23)

这是一个铸造问题吗?以及如何管理它以与 TensorFlowSharp 一起工作?

【问题讨论】:

    标签: c# unity3d tensorflow tensorflowsharp


    【解决方案1】:

    我可以通过简单地将张量中的值转换为字符串来解决这个问题。

     graph.Import(model.bytes);
     var session = new TFSession(graph);
     var runner = session.GetRunner();
     TFTensor tft = TFTensor.CreateString(array);
     runner.AddInput(graph[WAV_INPUT][0], tft);
     runner.Fetch(outputScoresNames);
     var output = runner.Run();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-07-25
      • 2019-01-31
      • 2021-03-31
      • 2015-03-30
      • 2011-11-25
      • 2021-04-16
      相关资源
      最近更新 更多