27 #ifndef LBANN_DATA_READERS_NODE2VEC_HPP_INCLUDED 28 #define LBANN_DATA_READERS_NODE2VEC_HPP_INCLUDED 31 #ifdef LBANN_HAS_LARGESCALE_NODE2VEC 41 namespace node2vec_reader_impl {
42 class DistributedDatabase;
62 class node2vec_reader :
public generic_data_reader
65 node2vec_reader(std::string graph_file,
70 size_t num_negative_samples);
71 node2vec_reader(
const node2vec_reader&) =
delete;
72 node2vec_reader& operator=(
const node2vec_reader&) =
delete;
73 ~node2vec_reader()
override;
74 node2vec_reader* copy()
const override;
76 std::string get_type()
const override;
78 const std::vector<int> get_data_dims()
const override;
79 int get_num_labels()
const override;
80 int get_linearized_data_size()
const override;
81 int get_linearized_label_size()
const override;
86 bool fetch_data_block(
CPUMat& X,
90 El::Matrix<El::Int>& indices_fetched)
override;
91 bool fetch_label(
CPUMat& Y,
int data_id,
int mb_idx)
override;
99 std::vector<std::vector<size_t>> run_walker(
size_t num_walks,
100 const locked_io_rng_ref&);
108 void update_noise_distribution();
111 std::unique_ptr<node2vec_reader_impl::DistributedDatabase>
112 m_distributed_database;
114 std::unique_ptr<node2vec_reader_impl::EdgeWeightData> m_edge_weight_data;
116 std::unique_ptr<node2vec_reader_impl::RandomWalker> m_random_walker;
127 std::deque<std::vector<size_t>> m_walks_cache;
130 std::vector<size_t> m_local_vertex_global_indices;
135 std::unordered_map<size_t, size_t> m_local_vertex_local_indices;
140 std::vector<size_t> m_local_vertex_visit_counts;
150 std::vector<double> m_local_vertex_noise_distribution;
157 size_t m_total_visit_count{0};
161 size_t m_noise_visit_count{0};
168 std::string m_graph_file;
179 size_t m_walk_length;
181 double m_return_param;
183 double m_inout_param;
185 size_t m_num_negative_samples;
190 #endif // LBANN_HAS_LARGESCALE_NODE2VEC 191 #endif // LBANN_DATA_READERS_NODE2VEC_HPP_INCLUDED
void load(std::string const &pbuf_filename, google::protobuf::Message &msg)
Fill the protobuf message from a binary file.
El::Matrix< DataType, El::Device::CPU > CPUMat