| 514 | |
| 515 | template<size_t dim, class Float = float, class Index = size_t> |
| 516 | class pyKnowledgeGraphSolver : public py::class_<graphvite::KnowledgeGraphSolver<dim, Float, Index>> { |
| 517 | public: |
| 518 | typedef graphvite::KnowledgeGraphSolver<dim, Float, Index> KnowledgeGraphSolver; |
| 519 | typedef py::class_<KnowledgeGraphSolver> Base; |
| 520 | using Base::attr; |
| 521 | using Base::def; |
| 522 | using Base::def_readonly; |
| 523 | using Base::def_property_readonly; |
| 524 | |
| 525 | template<class... Args> |
| 526 | pyKnowledgeGraphSolver(py::handle scope, const char *name, const Args &...args) : |
| 527 | Base(scope, signature(name, dim, typeid(Float).name(), typeid(Index).name()).c_str(), args...) { |
| 528 | attr("__doc__") = "KnowledgeGraphSolver(dim, float_type=dtype.float32, index_type=dtype.uint32, " |
| 529 | "device_ids=[], num_sampler_per_worker=auto, gpu_memory_limit=auto)" |
| 530 | R"( |
| 531 | Knowledge graph embedding solver. |
| 532 | |
| 533 | Parameters: |
| 534 | dim (int): dimension of embeddings |
| 535 | float_type (dtype): type of parameters |
| 536 | index_type (dtype): type of node indexes |
| 537 | device_ids (list of int, optional): GPU ids, [] for auto |
| 538 | num_sampler_per_worker (int, optional): number of sampler thread per GPU |
| 539 | gpu_memory_limit (int, optional): memory limit for each GPU in bytes |
| 540 | )"; |
| 541 | |
| 542 | // override instance name with template name |
| 543 | attr("__name__") = py::internal_str(name); |
| 544 | attr("__qualname__") = py::internal_str(name); |
| 545 | |
| 546 | // data members |
| 547 | def_readonly("num_partition", &KnowledgeGraphSolver::num_partition); |
| 548 | def_readonly("num_negative", &KnowledgeGraphSolver::num_negative); |
| 549 | def_readonly("sample_batch_size", &KnowledgeGraphSolver::sample_batch_size); |
| 550 | def_readonly("optimizer", &KnowledgeGraphSolver::optimizer); |
| 551 | def_readonly("negative_sample_exponent", &KnowledgeGraphSolver::negative_sample_exponent); |
| 552 | def_readonly("model", &KnowledgeGraphSolver::model); |
| 553 | def_readonly("num_epoch", &KnowledgeGraphSolver::num_epoch); |
| 554 | def_readonly("resume", &KnowledgeGraphSolver::resume); |
| 555 | def_readonly("relation_lr_multiplier", &KnowledgeGraphSolver::relation_lr_multiplier); |
| 556 | def_readonly("episode_size", &KnowledgeGraphSolver::episode_size); |
| 557 | def_readonly("batch_size", &KnowledgeGraphSolver::batch_size); |
| 558 | def_readonly("margin", &KnowledgeGraphSolver::margin); |
| 559 | def_readonly("l3_regularization", &KnowledgeGraphSolver::l3_regularization); |
| 560 | def_readonly("adversarial_temperature", &KnowledgeGraphSolver::adversarial_temperature); |
| 561 | def_readonly("positive_reuse", &KnowledgeGraphSolver::positive_reuse); |
| 562 | def_readonly("log_frequency", &KnowledgeGraphSolver::log_frequency); |
| 563 | def_readonly("num_worker", &KnowledgeGraphSolver::num_worker); |
| 564 | def_readonly("num_sampler", &KnowledgeGraphSolver::num_sampler); |
| 565 | def_readonly("gpu_memory_limit", &KnowledgeGraphSolver::gpu_memory_limit); |
| 566 | def_readonly("gpu_memory_cost", &KnowledgeGraphSolver::gpu_memory_cost); |
| 567 | |
| 568 | // numpy views (mutable but unassignable) |
| 569 | def_property_readonly("entity_embeddings", numpy_view(&KnowledgeGraphSolver::entity_embeddings), |
| 570 | "Entity embeddings (2D numpy view)."); |
| 571 | def_property_readonly("relation_embeddings", numpy_view(&KnowledgeGraphSolver::relation_embeddings), |
| 572 | "Relation embeddings (2D numpy view)."); |
| 573 |
nothing calls this directly
no outgoing calls
no test coverage detected