MCPcopy Create free account
hub / github.com/RootHarold/Lycoris / loadModel

Function loadModel

LycorisNet/sources/lycoris.cpp:743–830  ·  view source on GitHub ↗

Import the pre-trained model.

Source from the content-addressed store, hash-verified

741
742 // Import the pre-trained model.
743 Lycoris *loadModel(const std::string &path, uint32_t capacity) {
744 std::ifstream infile(path);
745 std::string str;
746 std::getline(infile, str);
747 infile.close();
748
749 if (str.empty()) {
750 std::cout << "Wrong path." << std::endl;
751 exit(1);
752 }
753
754 auto data = LycorisUtils::split(str);
755 auto source = new Individual();
756 source->inputNum = uint32_t(std::stoul(data[0]));
757 source->outputNum = uint32_t(std::stoul(data[1]));
758 source->innovationNum = uint32_t(std::stoul(data[2]));
759 source->nodeSum = uint32_t(std::stoul(data[3]));
760 source->fitness = std::stof(data[4]);
761
762 source->nodeSlice = new std::vector<uint32_t>(std::stoul(data[5]));
763 uint32_t pointer = 6;
764 for (uint32_t i = 0; i < std::stoul(data[5]); ++i) {
765 (*(source->nodeSlice))[i] = uint32_t(std::stoul(data[pointer]));
766 pointer++;
767 }
768
769 auto mapLength = uint32_t(std::stoul(data[pointer]));
770 pointer++;
771 source->nodeMap = new std::map<uint32_t, Node *>();
772 for (uint32_t i = 0; i < mapLength; ++i) {
773 auto key = uint32_t(std::stoul(data[pointer]));
774 pointer++;
775 auto temp1 = data[pointer];
776 pointer++;
777 auto temp2 = data[pointer];
778 pointer++;
779 auto n = new Node(uint32_t(std::stoul(temp1)), uint32_t(std::stoul(temp2)));
780 n->value = std::stof(data[pointer]);
781 pointer++;
782 n->bias = std::stof(data[pointer]);
783 pointer++;
784
785 auto genomeLength = uint32_t(std::stoul(data[pointer]));
786 pointer++;
787 for (uint32_t j = 0; j < genomeLength; ++j) {
788 Gen g;
789 g.in = uint32_t(std::stoul(data[pointer]));
790 pointer++;
791 g.out = uint32_t(std::stoul(data[pointer]));
792 pointer++;
793 Ome o;
794 o.weight = std::stof(data[pointer]);
795 pointer++;
796 o.innovationNum = uint32_t(std::stoul(data[pointer]));
797 pointer++;
798 (*(n->genomeMap))[g] = o;
799 }
800

Callers

nothing calls this directly

Calls 1

cloneMethod · 0.45

Tested by

no test coverage detected