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

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

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

// 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 item) (в: 0) BayesServer.NetworkLinkCollection.Add (элемент BayesServer.Link) (в : 0) BayesNet.InitializeNetworkForLevel (System.Int32 numberOfDistractors, System.Int32 levelId) (в разделе Активы / Сценарии / BayesNet.cs: 57) BayesNet.Start () (в разделе Активы / Сценарии / BayesNet.cs: 22)

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...