0

次のループがあります。

for (int i = 1; i <= epochs; ++i) {
    for (std::vector<std::filesystem::path>::iterator it = batchFiles.begin(); it != batchFiles.end(); ++it) {
        struct fann_train_data *data = fann_read_train_from_file(it->string().c_str());
        fann_shuffle_train_data(data);
        float error = fann_train_epoch(ann, data);
    }
}

annネットワークです。
batchFilesですstd::vector<std::filesystem::path>

このコードは、フォルダー内のすべてのトレーニング データ ファイルを反復処理し、それを使用して毎回、epochs変数によって決定される回数だけ ANN をトレーニングします。

次の行により、メモリ リークが発生します。

struct fann_train_data *data = fann_read_train_from_file(it->string().c_str());

問題は、一度にすべてをロードするのに十分なメモリがないため、トレーニング ファイルを常に切り替える必要があることです。そうしないと、トレーニング データを 1 回だけロードしたことになります。

なぜこれが起こるのですか?どうすればこれを解決できますか?

4

2 に答える 2