本文整理汇总了C++中bipartite_graph_descriptor::get_end_node方法的典型用法代码示例。如果您正苦于以下问题:C++ bipartite_graph_descriptor::get_end_node方法的具体用法?C++ bipartite_graph_descriptor::get_end_node怎么用?C++ bipartite_graph_descriptor::get_end_node使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类bipartite_graph_descriptor
的用法示例。
在下文中一共展示了bipartite_graph_descriptor::get_end_node方法的7个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: multiply
void multiply(DistSlicedMat & mat, int curoffset, double a){
assert(a>0);
DistVec current = mat[curoffset];
assert(mat.start_offset <= current.offset);
vec result = zeros(curoffset);
if (curoffset > 0){
#pragma omp parallel for
for (int i=mat.start_offset; i< current.offset; i++){
for (int k=info.get_start_node(!current.transpose); k< info.get_end_node(!current.transpose); k++){
result[i-mat.start_offset] += latent_factors_inmem[k].pvec[i] * latent_factors_inmem[k].pvec[current.offset];
}
}
#pragma omp parallel for
for (int k=info.get_start_node(!current.transpose); k< info.get_end_node(!current.transpose); k++){
latent_factors_inmem[k].pvec[curoffset] /= a;
}
for (int i=mat.start_offset; i< current.offset; i++){
#pragma omp parallel for
for (int k=info.get_start_node(!current.transpose); k< info.get_end_node(!current.transpose); k++){
latent_factors_inmem[k].pvec[current.offset] -= result[i-mat.start_offset]/a * latent_factors_inmem[k].pvec[i];
}
}
}
current.debug_print(current.name);
}
示例2: orthogonalize_vs_all
void orthogonalize_vs_all(DistSlicedMat & mat, int curoffset, double &alpha){
assert(mi.ortho_repeats >=1 && mi.ortho_repeats <= 3);
bool old_debug = debug;
debug = false;
DistVec current = mat[curoffset];
assert(mat.start_offset <= current.offset);
double * alphas = new double[curoffset];
//DistDouble * alphas = new DistDouble[curoffset];
//cout<<current.to_vec().transpose() << endl;
if (curoffset > 0){
for (int j=0; j < mi.ortho_repeats; j++){
memset(alphas, 0, sizeof(double)*curoffset);
#pragma omp parallel for
for (int i=mat.start_offset; i< current.offset; i++){
for (int k=info.get_start_node(!current.transpose); k< info.get_end_node(!current.transpose); k++){
assert(i-mat.start_offset>=0 && i-mat.start_offset < curoffset);
assert(i < latent_factors_inmem[k].pvec.size());
assert(k < (int)latent_factors_inmem.size());
assert(current.offset < latent_factors_inmem[k].pvec.size());
alphas[i-mat.start_offset] += latent_factors_inmem[k].pvec[i] * latent_factors_inmem[k].pvec[current.offset];
}
}
for (int i=mat.start_offset; i< current.offset; i++){
#pragma omp parallel for
for (int k=info.get_start_node(!current.transpose); k< info.get_end_node(!current.transpose); k++){
latent_factors_inmem[k].pvec[current.offset] -= alphas[i-mat.start_offset] * latent_factors_inmem[k].pvec[i];
}
}
} //for ortho_repeast
}
delete [] alphas;
debug = old_debug;
current.debug_print(current.name);
// alpha = 0;
double sum = 0;
int k;
//#pragma omp parallel for private(k) reduction(+: sum)
for (k=info.get_start_node(!current.transpose); k< info.get_end_node(!current.transpose); k++){
sum = sum + pow(latent_factors_inmem[k].pvec[current.offset],2);
}
alpha = sqrt(sum);
if (alpha >= 1e-10 ){
#pragma omp parallel for
for (int k=info.get_start_node(!current.transpose); k< info.get_end_node(!current.transpose); k++){
latent_factors_inmem[k].pvec[current.offset]/=alpha;
}
}
}
示例3: assert
DistVec& DistVec::operator=(DistMat &mat){
mi.r_offset = offset;
assert(prev_offset < data_size);
mi.prev_offset = prev_offset;
transpose = mat.transpose;
mi.start = info.get_start_node(!transpose);
mi.end = info.get_end_node(!transpose);
//graphchi_engine<VertexDataType, EdgeDataType> engine(training, nshards, false, m);
//set_engine_flags(engine);
//Axb program;
pengine->run(program, 1);
debug_print(name);
mi.reset_offsets();
mat.transpose = false;
return *this;
}
示例4: assert
DistVec& DistVec::operator=(DistMat &mat){
mi.r_offset = offset;
assert(prev_offset < data_size);
mi.prev_offset = prev_offset;
transpose = mat.transpose;
mi.start = info.get_start_node(!transpose);
mi.end = info.get_end_node(!transpose);
graphchi_engine<VertexDataType, EdgeDataType> engine(training, nshards, false, m);
engine.set_disable_vertexdata_storage();
Axb program;
engine.set_modifies_inedges(false);
engine.set_modifies_outedges(false);
engine.run(program, 1);
debug_print(name);
mi.reset_offsets();
mat.transpose = false;
return *this;
}
示例5: assert
DistVec& DistVec::operator=(DistMat &mat){
mi.r_offset = offset;
assert(prev_offset < data_size);
mi.prev_offset = prev_offset;
transpose = mat.transpose;
mi.start = info.get_start_node(!transpose);
mi.end = info.get_end_node(!transpose);
INITIALIZE_TRACER(Axbtrace, "Axb update function");
BEGIN_TRACEPOINT(Axbtrace);
pcurrent = this;
int old_start = start; int old_end = end;
start = mi.start; end = mi.end;
start_engine();
start = old_start; end = old_end;
END_TRACEPOINT(Axbtrace);
debug_print(name);
mi.reset_offsets();
mat.transpose = false;
return *this;
}
示例6: init
void init(){
start = info.get_start_node(!transpose);
end = info.get_end_node(!transpose);
assert(start < end && start >= 0 && end >= 1);
//debug_print(name);
};
示例7: selected_node
bool selected_node(const graph_type::vertex_type& vertex){
if (info.is_square())
return true;
else return ((vertex.id() >= (uint)info.get_start_node(!pcurrent->transpose)) &&
(vertex.id() < (uint)info.get_end_node(!pcurrent->transpose)));
}