| 640 | |
| 641 | template<size_t dim, class Float = float, class Index = size_t> |
| 642 | class pyVisualizationSolver : public py::class_<graphvite::VisualizationSolver<dim, Float, Index>> { |
| 643 | public: |
| 644 | typedef graphvite::VisualizationSolver<dim, Float, Index> VisualizationSolver; |
| 645 | typedef py::class_ <VisualizationSolver> Base; |
| 646 | using Base::attr; |
| 647 | using Base::def; |
| 648 | using Base::def_readonly; |
| 649 | using Base::def_property_readonly; |
| 650 | |
| 651 | template<class... Args> |
| 652 | pyVisualizationSolver(py::handle scope, const char *name, const Args &...args) : |
| 653 | Base(scope, signature(name, dim, typeid(Float).name(), typeid(Index).name()).c_str(), args...) { |
| 654 | attr("__doc__") = "VisualizationSolver(dim, float_type=dtype.float32, index_type=dtype.uint32, " |
| 655 | "device_ids=[], num_sampler_per_worker=auto, gpu_memory_limit=auto)" |
| 656 | R"( |
| 657 | Visualization solver. |
| 658 | |
| 659 | Parameters: |
| 660 | dim (int): dimension of embeddings |
| 661 | float_type (dtype): type of parameters |
| 662 | index_type (dtype): type of node indexes |
| 663 | device_ids (list of int, optional): GPU ids, [] for auto |
| 664 | num_sampler_per_worker (int, optional): number of sampler thread per GPU |
| 665 | gpu_memory_limit (int, optional): memory limit for each GPU in bytes |
| 666 | )"; |
| 667 | |
| 668 | // override instance name with template name |
| 669 | attr("__name__") = py::internal_str(name); |
| 670 | attr("__qualname__") = py::internal_str(name); |
| 671 | |
| 672 | // data members |
| 673 | def_readonly("num_partition", &VisualizationSolver::num_partition); |
| 674 | def_readonly("num_negative", &VisualizationSolver::num_negative); |
| 675 | def_readonly("sample_batch_size", &VisualizationSolver::sample_batch_size); |
| 676 | def_readonly("optimizer", &VisualizationSolver::optimizer); |
| 677 | def_readonly("negative_sample_exponent", &VisualizationSolver::negative_sample_exponent); |
| 678 | def_readonly("negative_weight", &VisualizationSolver::negative_weight); |
| 679 | def_readonly("model", &VisualizationSolver::model); |
| 680 | def_readonly("num_epoch", &VisualizationSolver::num_epoch); |
| 681 | def_readonly("resume", &VisualizationSolver::resume); |
| 682 | def_readonly("episode_size", &VisualizationSolver::episode_size); |
| 683 | def_readonly("batch_size", &VisualizationSolver::batch_size); |
| 684 | def_readonly("positive_reuse", &VisualizationSolver::positive_reuse); |
| 685 | def_readonly("log_frequency", &VisualizationSolver::log_frequency); |
| 686 | def_readonly("num_worker", &VisualizationSolver::num_worker); |
| 687 | def_readonly("num_sampler", &VisualizationSolver::num_sampler); |
| 688 | def_readonly("gpu_memory_limit", &VisualizationSolver::gpu_memory_limit); |
| 689 | def_readonly("gpu_memory_cost", &VisualizationSolver::gpu_memory_cost); |
| 690 | |
| 691 | // numpy views (mutable but unassignable) |
| 692 | def_property_readonly("coordinates", numpy_view(&VisualizationSolver::coordinates), |
| 693 | "Low-dimensional coordinates (2D numpy view)."); |
| 694 | |
| 695 | // member functions |
| 696 | def(py::init<std::vector<int>, int, size_t> (), py::no_gil(), |
| 697 | py::arg("device_ids") = std::vector<int>(), py::arg("num_sampler_per_worker") = graphvite::kAuto, |
| 698 | py::arg("gpu_memory_limit") = graphvite::kAuto); |
| 699 |
nothing calls this directly
no outgoing calls
no test coverage detected