每 n 次迭代将输出写入文件
Write the output to a file for every n iterations
大家好,
这是一个包的以下代码:
for (int iter = 0; iter < flags.total_iterations_; ++iter) {
std::cout << "Iteration " << iter << " ...\n";
if (flags.compute_likelihood_ == "true") {
double loglikelihood = 0;
for (list<LDADocument*>::const_iterator iterator = corpus.begin();
iterator != corpus.end();
++iterator) {
loglikelihood += sampler.LogLikelihood(*iterator);
}
std::cout << "Loglikelihood: " << loglikelihood << std::endl;
}
sampler.DoIteration(&corpus, true, iter < flags.burn_in_iterations_);
}
accum_model.AverageModel(
flags.total_iterations_ - flags.burn_in_iterations_);
FreeCorpus(&corpus);
std::ofstream fout(flags.model_file_.c_str());
accum_model.AppendAsString(word_index_map, fout);
return 0;
我想以每 20 次迭代的方式对此进行调整,我想编写一个文件来存储 fout 的结果。我实际上是 python 中代码编码的初学者。由于包中有 C++ 代码,我不知道在哪里输入什么。
我理解这样的逻辑:
必须有一个计算迭代次数的计数器,每进行 20 次迭代,必须创建一个文件,并将 fout 的结果保存在该文件中。对于每 20 次迭代,我需要创建新文件,因为我不希望为了分析目的而覆盖内容。
请帮助我,因为我是一个新手,对 C++ 完全一窍不通。提前致谢!
试试这个:
for (int iter = 0; iter < flags.total_iterations_; ++iter) {
double loglikelihood = 0;
std::cout << "Iteration " << iter << " ...\n";
if(iter%20==0) {
const char *path1 = "Your path to the files"
std::ofstream llh_file;
std::ofstream myfile;
std::string result;
char numstr[30];
sprintf(numstr, "%d", iter);
result = path1 + std::string (numstr) + ".txt";
myfile.open(result.c_str());
model.AppendAsString(myfile);
myfile.close();
大家好, 这是一个包的以下代码:
for (int iter = 0; iter < flags.total_iterations_; ++iter) {
std::cout << "Iteration " << iter << " ...\n";
if (flags.compute_likelihood_ == "true") {
double loglikelihood = 0;
for (list<LDADocument*>::const_iterator iterator = corpus.begin();
iterator != corpus.end();
++iterator) {
loglikelihood += sampler.LogLikelihood(*iterator);
}
std::cout << "Loglikelihood: " << loglikelihood << std::endl;
}
sampler.DoIteration(&corpus, true, iter < flags.burn_in_iterations_);
}
accum_model.AverageModel(
flags.total_iterations_ - flags.burn_in_iterations_);
FreeCorpus(&corpus);
std::ofstream fout(flags.model_file_.c_str());
accum_model.AppendAsString(word_index_map, fout);
return 0;
我想以每 20 次迭代的方式对此进行调整,我想编写一个文件来存储 fout 的结果。我实际上是 python 中代码编码的初学者。由于包中有 C++ 代码,我不知道在哪里输入什么。
我理解这样的逻辑:
必须有一个计算迭代次数的计数器,每进行 20 次迭代,必须创建一个文件,并将 fout 的结果保存在该文件中。对于每 20 次迭代,我需要创建新文件,因为我不希望为了分析目的而覆盖内容。
请帮助我,因为我是一个新手,对 C++ 完全一窍不通。提前致谢!
试试这个:
for (int iter = 0; iter < flags.total_iterations_; ++iter) {
double loglikelihood = 0;
std::cout << "Iteration " << iter << " ...\n";
if(iter%20==0) {
const char *path1 = "Your path to the files"
std::ofstream llh_file;
std::ofstream myfile;
std::string result;
char numstr[30];
sprintf(numstr, "%d", iter);
result = path1 + std::string (numstr) + ".txt";
myfile.open(result.c_str());
model.AppendAsString(myfile);
myfile.close();