首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TFException:要求arg[0]为字符串,但提供了浮点型(Unity3d)

TFException:要求arg[0]为字符串,但提供了浮点型(Unity3d)
EN

Stack Overflow用户
提问于 2018-06-10 16:51:23
回答 1查看 1.1K关注 0票数 0

我使用的是带有Unity3d变量的TensorFlow中的语音命令模型示例:

代码语言:javascript
复制
string WAV_INPUT = "wav_data";
        string SOFTMAX_NAME = "labels_softmax";
        string[] outputScoresNames = new string[] { SOFTMAX_NAME };

然后向模型添加输入,如下所示:

代码语言:javascript
复制
 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的例外是这样的:

代码语言:javascript
复制
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协同工作?

EN

回答 1

Stack Overflow用户

发布于 2019-05-28 18:10:29

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

代码语言:javascript
复制
 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();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50782045

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档