IamOverlord
پنج شنبه 02 مرداد 1393, 04:07 صبح
سلام دوستان!
از FANN (https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=3&cad=rja&uact=8&ved=0CC4QFjAC&url=http%3A%2F%2Fleenissen.dk%2F&ei=Q0_QU7zJBcPG0QXyvoC4Dg&usg=AFQjCNHc_sKvOmvyii3WfMYFTMRkG7Q-YA&sig2=FQ348R704DSdcLv1Eg8DrA&bvm=bv.71667212,d.d2k) استفاده می کنم...
وقتی شبکه ی عصبی ام رو Train می کنم و در فایلی ذخیره می کنم و بعد دوباره اون رو Load می کنم و دوباره Train می کنم، انگار شبکه عصبی داره از اول Train می شه!
چرا؟! مشکل چیه؟!
ببخشید اگه کدم شلوغه! main ها رو بخونید! ...
#include <iostream>#include <fstream>
using namespace std;
#include <stdio.h>
#include <opencv2/opencv.hpp>
using namespace cv;
#include <algorithm>
#include <boost/filesystem.hpp>
#include "fann.h"
/* COMMAND LINE ARGUMENTS */
char* getCmdOption(char ** begin, char ** end, const std::string & option)
{
char ** itr = std::find(begin, end, option);
if (itr != end && ++itr != end)
{
return *itr;
}
return 0;
}
bool cmdOptionExists(char** begin, char** end, const std::string& option)
{
return std::find(begin, end, option) != end;
}
/* --------------------------- */
int main(int argc, char** argv)
{
string train_data_path ("train.data");
if (cmdOptionExists (argv, argv+argc, "-i")) train_data_path.assign (getCmdOption (argv, argv+argc, "-i"));
string nn_file_path ("output.nn");
if (cmdOptionExists (argv, argv+argc, "-o")) nn_file_path.assign (getCmdOption (argv, argv+argc, "-o"));
const unsigned int num_layers = 4;
const unsigned int layers[] = {9, 100, 100, 9};
const float desired_error = (const float) 0.0000001;
const unsigned int max_epochs = 1000;
const unsigned int epochs_between_reports = 1;
struct fann *ann = fann_create_standard_array(num_layers, layers);
fann_set_activation_function_hidden(ann, FANN_SIGMOID_SYMMETRIC);
fann_set_activation_function_output(ann, FANN_SIGMOID_SYMMETRIC);
//fann_set_activation_function_hidden(ann, FANN_SIGMOID);
//fann_set_activation_function_output(ann, FANN_SIGMOID);
fann_train_on_file(ann, train_data_path.c_str(), max_epochs,
epochs_between_reports, desired_error);
fann_save(ann, nn_file_path.c_str());
fann_destroy(ann);
return 0;
}
#include <iostream>#include <fstream>
using namespace std;
#include <stdio.h>
#include <opencv2/opencv.hpp>
using namespace cv;
#include <algorithm>
#include <boost/filesystem.hpp>
#include "fann.h"
/* COMMAND LINE ARGUMENTS */
char* getCmdOption(char ** begin, char ** end, const std::string & option)
{
char ** itr = std::find(begin, end, option);
if (itr != end && ++itr != end)
{
return *itr;
}
return 0;
}
bool cmdOptionExists(char** begin, char** end, const std::string& option)
{
return std::find(begin, end, option) != end;
}
/* --------------------------- */
int main(int argc, char** argv)
{
string train_data_path ("train.data");
if (cmdOptionExists (argv, argv+argc, "-i")) train_data_path.assign (getCmdOption (argv, argv+argc, "-i"));
string nn_file_path ("output.nn");
if (cmdOptionExists (argv, argv+argc, "-o")) nn_file_path.assign (getCmdOption (argv, argv+argc, "-o"));
struct fann *ann = fann_create_from_file(nn_file_path.c_str());
const float desired_error = (const float) 0.0000001;
const unsigned int max_epochs = 100;
const unsigned int epochs_between_reports = 1;
fann_train_on_file(ann, train_data_path.c_str(), max_epochs,
epochs_between_reports, desired_error);
fann_save(ann, nn_file_path.c_str());
fann_destroy(ann);
return 0;
}
از FANN (https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=3&cad=rja&uact=8&ved=0CC4QFjAC&url=http%3A%2F%2Fleenissen.dk%2F&ei=Q0_QU7zJBcPG0QXyvoC4Dg&usg=AFQjCNHc_sKvOmvyii3WfMYFTMRkG7Q-YA&sig2=FQ348R704DSdcLv1Eg8DrA&bvm=bv.71667212,d.d2k) استفاده می کنم...
وقتی شبکه ی عصبی ام رو Train می کنم و در فایلی ذخیره می کنم و بعد دوباره اون رو Load می کنم و دوباره Train می کنم، انگار شبکه عصبی داره از اول Train می شه!
چرا؟! مشکل چیه؟!
ببخشید اگه کدم شلوغه! main ها رو بخونید! ...
#include <iostream>#include <fstream>
using namespace std;
#include <stdio.h>
#include <opencv2/opencv.hpp>
using namespace cv;
#include <algorithm>
#include <boost/filesystem.hpp>
#include "fann.h"
/* COMMAND LINE ARGUMENTS */
char* getCmdOption(char ** begin, char ** end, const std::string & option)
{
char ** itr = std::find(begin, end, option);
if (itr != end && ++itr != end)
{
return *itr;
}
return 0;
}
bool cmdOptionExists(char** begin, char** end, const std::string& option)
{
return std::find(begin, end, option) != end;
}
/* --------------------------- */
int main(int argc, char** argv)
{
string train_data_path ("train.data");
if (cmdOptionExists (argv, argv+argc, "-i")) train_data_path.assign (getCmdOption (argv, argv+argc, "-i"));
string nn_file_path ("output.nn");
if (cmdOptionExists (argv, argv+argc, "-o")) nn_file_path.assign (getCmdOption (argv, argv+argc, "-o"));
const unsigned int num_layers = 4;
const unsigned int layers[] = {9, 100, 100, 9};
const float desired_error = (const float) 0.0000001;
const unsigned int max_epochs = 1000;
const unsigned int epochs_between_reports = 1;
struct fann *ann = fann_create_standard_array(num_layers, layers);
fann_set_activation_function_hidden(ann, FANN_SIGMOID_SYMMETRIC);
fann_set_activation_function_output(ann, FANN_SIGMOID_SYMMETRIC);
//fann_set_activation_function_hidden(ann, FANN_SIGMOID);
//fann_set_activation_function_output(ann, FANN_SIGMOID);
fann_train_on_file(ann, train_data_path.c_str(), max_epochs,
epochs_between_reports, desired_error);
fann_save(ann, nn_file_path.c_str());
fann_destroy(ann);
return 0;
}
#include <iostream>#include <fstream>
using namespace std;
#include <stdio.h>
#include <opencv2/opencv.hpp>
using namespace cv;
#include <algorithm>
#include <boost/filesystem.hpp>
#include "fann.h"
/* COMMAND LINE ARGUMENTS */
char* getCmdOption(char ** begin, char ** end, const std::string & option)
{
char ** itr = std::find(begin, end, option);
if (itr != end && ++itr != end)
{
return *itr;
}
return 0;
}
bool cmdOptionExists(char** begin, char** end, const std::string& option)
{
return std::find(begin, end, option) != end;
}
/* --------------------------- */
int main(int argc, char** argv)
{
string train_data_path ("train.data");
if (cmdOptionExists (argv, argv+argc, "-i")) train_data_path.assign (getCmdOption (argv, argv+argc, "-i"));
string nn_file_path ("output.nn");
if (cmdOptionExists (argv, argv+argc, "-o")) nn_file_path.assign (getCmdOption (argv, argv+argc, "-o"));
struct fann *ann = fann_create_from_file(nn_file_path.c_str());
const float desired_error = (const float) 0.0000001;
const unsigned int max_epochs = 100;
const unsigned int epochs_between_reports = 1;
fann_train_on_file(ann, train_data_path.c_str(), max_epochs,
epochs_between_reports, desired_error);
fann_save(ann, nn_file_path.c_str());
fann_destroy(ann);
return 0;
}