2017-01-08 48 views
0

我已经遵循了安装SDK和配置服务凭证的步骤。问题是我不能训练我自己的分类器。我得到这个错误:No overload for method 'TrainClassifier' takes 5 arguments训练自己的分类器IBM Watson Visual Recognition Unity3d

void Start() 
{ 
    string m_positiveExamplesPath = Application.dataPath + "/testData/cpu_positive_examples.zip"; 
    string m_negativeExamplesPath = Application.dataPath + "/testData/negative_examples.zip"; 
    if(!m_VisualRecognition.TrainClassifier("components", "cpu", m_positiveExamplesPath, m_negativeExamplesPath, OnTrainClassifier)) 
     Log.Debug("ExampleVisualRecognition", "Train classifier failed!"); 
} 

private void OnTrainClassifier(GetClassifiersPerClassifierVerbose classifier) 
{ 

    if(classifier != null) 
    { 
     Log.Debug("ExampleVisualRecognition", "Classifier is training! " + classifier); 
    } 
    else 
    { 
     Log.Debug("ExampleVisualRecognition", "Failed to train classifier!"); 
    } 
} 

Here是GitHub中SDK的链接。谢谢!

回答

1

您从example page复制了该代码,但看起来该页面上的所有内容都已过时。它需要由IBM进行更新。

VisualRecognition类有2个重载TrainClassifier

public bool TrainClassifier(OnTrainClassifier callback, string classifierName, Dictionary<string, string> positiveExamples, string negativeExamplesPath = default(string), string mimeType = "application/zip", string customData = default(string)) 

public bool TrainClassifier(OnTrainClassifier callback, string classifierName, Dictionary<string, byte[]> positiveExamplesData, byte[] negativeExamplesData = null, string mimeType = "application/zip", string customData = default(string)) 

你有SDK就在你的面前。下次您收到此类错误时,请选择该功能,然后右键点击前往定义。它会告诉你该函数的过载,然后你将能够在它内部传递正确的参数。

enter image description here

你的代码应该是这样的:

private VisualRecognition m_VisualRecognition = new VisualRecognition(); 

void Start() 
{ 
    string m_positiveExamplesPath = Application.dataPath + "/testData/cpu_positive_examples.zip"; 
    string m_negativeExamplesPath = Application.dataPath + "/testData/negative_examples.zip"; 

    Dictionary<string, string> positiveExamples = new Dictionary<string, string>(); 
    positiveExamples.Add("giraffe", m_positiveExamplesPath); 

    if (!m_VisualRecognition.TrainClassifier(OnTrainClassifier, "unity-test-classifier-example", positiveExamples, m_negativeExamplesPath)) 
     Log.Debug("ExampleVisualRecognition", "Train classifier failed!"); 
} 

private void OnTrainClassifier(GetClassifiersPerClassifierVerbose classifier, string data) 
{ 

    if (classifier != null) 
    { 
     Log.Debug("ExampleVisualRecognition", "Classifier is training! " + classifier); 
    } 
    else 
    { 
     Log.Debug("ExampleVisualRecognition", "Failed to train classifier!"); 
    } 
} 

如果您需要任何其他的例子,example page得到它。从插件附带的示例文件夹中获取。

+0

谢谢你,今天我学到了一些东西。我试图运行代码,但是我没有从控制台得到任何回应。你有什么想法,为什么?我希望我不要问太多。谢谢! – MDLots

+0

我能够得到回复。我的答案是解决你的'没有重载的方法'TrainClassifier'有5个参数的错误。请为其他问题创建一个新问题。我会看看他们。如果你的错误消失了,请不要忘记接受。 – Programmer