ArgumentException: узлы, содержащие любые непрерывные переменные, не могут иметь дочерние узлы, содержащие какие-либо дискретные переменные

Я пытаюсь представить следующую сеть, используя код C# на сервере Байеса. В сети Prior и узлы "Знания" в моей сети являются непрерывными, имеют значения вероятности от 0 до 1, а узел вопроса дискретен, имеет только два состояния, правильные или неправильные (т. е. правильно или неправильно дан ответ на вопрос). введите описание изображения здесь

Сеть реализована следующим образом в моем скрипте.

// numberOfDistractors and levelId will be used later for added complexity in modeling
void InitializeNetworkForLevel(int numberOfDistractors, int levelId)
{
    beliefnet = new BayesServer.Network();

    // add an intial knowledge node
    priorKnowledge = new Variable("PriorKnowledge", VariableValueType.Continuous, VariableKind.Probability);
    // initialize the priorKnowledge value to 0.5 if level = 1, else set it to learn rate (may be here, or in the queryNetwork method)
    priorKnowledgeNode = new Node("Prior", priorKnowledge);
    beliefnet.Nodes.Add(priorKnowledgeNode);

    // add a knowledge node which is a latent variable (parameter to be learned from observed values
    learnRate = new Variable("LearnRate", VariableValueType.Continuous, VariableKind.Probability);
    knowledgeNode = new Node("Knowledge", learnRate);
    beliefnet.Nodes.Add(knowledgeNode);

    // add a link from prior node to knowledge node
    beliefnet.Links.Add(new Link(priorKnowledgeNode, knowledgeNode));

    // add a question node, which denotes the oberved variable whether the question is answered correctly or not
    // this node has two states, namely correct or incorrect
    State correct = new State("Correct");
    State inCorrect = new State("Inorrect");
    questionNode = new Node("Question", correct, inCorrect);
    beliefnet.Nodes.Add(questionNode);

    // add a link from knowledge node to question node
    beliefnet.Links.Add(new Link(knowledgeNode, questionNode));

    // We will use the RelevanceTree algorithm here, as it is optimized for parameter learning
    learning = new ParameterLearning(beliefnet, new RelevanceTreeInferenceFactory());
    learningOptions = new ParameterLearningOptions();
    QueryNetwork(true);
}

Тем не менее, это не позволяет мне создавать сеть, говоря, что узлы с непрерывными переменными не могут иметь дочерние узлы с дискретной переменной, и просит меня дискретизировать эти непрерывные узлы. Однако сеть такая, какая есть, и я не уверен, что смогу ее изменить. Как мне это сделать?

ArgumentException: узлы, содержащие любые непрерывные переменные, не могут иметь дочерних узлов, содержащих какие-либо дискретные переменные. Вместо этого ссылка может быть обращена (при необходимости), или вместо этого может быть добавлена ​​скрытая дискретная родительская ссылка, или же может быть дискретизирована непрерывная переменная. BayesServer.NetworkLinkCollection. (BayesServer.Link) (по адресу:0) BayesServer.NetworkLinkCollection.Insert (индекс System.Int32, элемент BayesServer.Link) (по адресу:0) BayesServer.NetworkLinkCollection.Add (элемент BayesServer.Link) (по адресу:0) BayesNet.InitializeNetwork (System.Int32 numberOfDistractors, System.Int32 levelId) (в разделе Активы / Сценарии /BayesNet.cs:57) BayesNet.Start () (в разделе Активы / Сценарии /BayesNet.cs:22)

введите описание изображения здесь

0 ответов

Другие вопросы по тегам