int main(int argc, char* argv[]) { ios_base::sync_with_stdio(0); string data_infile = string(argv[1]); string network_infile = string(argv[2]); string child_name = string("C1"); if (argv[3] == string("EM") || argv[3] == string("Smile")) { DSL_network net = LearnParamsEM(data_infile, network_infile, child_name); int childIdx = net.FindNode(child_name.c_str()); DSL_node* childNode = net.GetNode(childIdx); if (argv[3] == string("Smile")) { childNode->ChangeType(DSL_NOISY_MAX); } //printCPT(childNode); } else if (argv[3] == string("Naive")) { DSL_network net = LearnParamsNaive(data_infile, network_infile, child_name); //int childIdx = net.FindNode(child_name.c_str()); //DSL_node* childNode = net.GetNode(childIdx); //printCPT(childNode); } else if (argv[3] == string("Gauss")) { DSL_network net = LearnParamsGaussJordan(data_infile, network_infile, child_name); //int childIdx = net.FindNode(child_name.c_str()); //DSL_node* childNode = net.GetNode(childIdx); //printCPT(childNode); } else if (argv[3] == string("NvGJ")) { DSL_network netGJ = LearnParamsGaussJordan(data_infile, network_infile, child_name); DSL_network netNaive = LearnParamsNaive(data_infile, network_infile, child_name); DSL_network netEM = LearnParamsEM(data_infile, network_infile, child_name); DSL_network netOriginal = OpenNetwork(network_infile); vf1D weights = getWeights(netOriginal, child_name); vf2D cptGJ = getCPTArray(netGJ, child_name); vf2D cptNaive = getCPTArray(netNaive, child_name); vf2D cptEM = getCPTArray(netEM, child_name); vf2D cptOriginal = getCPTArray(netOriginal, child_name); cout << "Gauss:" << EuclidianDistance( cptOriginal, cptGJ, weights) << endl; cout << "Naive:" << EuclidianDistance( cptOriginal, cptNaive, weights) << endl; cout << "EM:" << EuclidianDistance( cptOriginal, cptEM, weights) << endl; //cout << "Euclidian distance (orig vs GJ): " << EuclidianDistance(original, netGJ, child_name) << endl; //cout << "Euclidian distance (orig vs Naive): " << EuclidianDistance(original, netNaive, child_name) << endl; //int childIdx = net.FindNode(child_name.c_str()); } return 0; }
int node_ChangeType(void * void_node, int newType) { DSL_node * node = reinterpret_cast<DSL_node*>(void_node); return node->ChangeType(newType); }