Nie kompiluje mi się i nie wiem dlaczego.
fanntraining.h
Kod: Zaznacz cały
#ifndef FANNTRAINING_H
#define FANNTRAINING_H
#include "fann.h"
class FannTraining
{
public:
FannTraining(unsigned int num_input = 26, unsigned int num_output = 3,
unsigned int num_layers = 3, unsigned int num_neurons_hidden = 3,
float desired_error = 0.001,
unsigned int max_epochs = 500000,
unsigned int epochs_between_reports = 1000);
~FannTraining();
/*** Set parameters ***/
void setNumImput(unsigned int num_input);
void setNumOutput(unsigned int num_output);
void setNumLayers(unsigned int num_layers);
void setNumNeuronsHidden(unsigned int num_neurons_hidden);
void setDesiredError(float desired_error);
void setMaxEpochs(unsigned int max_epochs);
void setEpochsBetweenReports(unsigned int epochs_between_reports);
/*** Get parameters ***/
unsigned int getNumImput();
unsigned int getNumOutput();
unsigned int getNumLayers();
unsigned int getNumNeuronsHidden();
float getDesiredError();
unsigned int getMaxEpochs();
unsigned int getEpochsBetweenReports();
void trainFannFromFile(char *fileName);
void saveNeuralNetwork(char *fileName = "language_classify.net");
private:
unsigned int num_input;
unsigned int num_output;
unsigned int num_layers;
unsigned int num_neurons_hidden;
float desired_error;
unsigned int max_epochs;
unsigned int epochs_between_reports;
struct fann *ann;
};
#endif // FANNTRAINING_H
fanntraining.cpp
Kod: Zaznacz cały
#include "fanntraining.h"
FannTraining::FannTraining(unsigned int num_input /*= 26*/, unsigned int num_output /*= 3*/,
unsigned int num_layers /*= 3*/, unsigned int num_neurons_hidden /*= 3*/,
float desired_error /*= 0.001*/,
unsigned int max_epochs /*= 500000*/,
unsigned int epochs_between_reports /*= 1000*/)
{
this->num_input = num_input;
this->num_output = num_output;
this->num_layers = num_layers;
this->num_neurons_hidden = num_neurons_hidden;
this->desired_error = desired_error;
this->max_epochs = max_epochs;
this->epochs_between_reports = epochs_between_reports;
}
FannTraining::~FannTraining()
{
fann_destroy(ann);
}
/*** Set parameters ***/
void FannTraining::setNumImput(unsigned int num_input)
{
this->num_input = num_input;
}
void FannTraining::setNumOutput(unsigned int num_output)
{
this->num_output = num_output;
}
void FannTraining::setNumLayers(unsigned int num_layers)
{
this->num_layers = num_layers;
}
void FannTraining::setNumNeuronsHidden(unsigned int num_neurons_hidden)
{
this->num_neurons_hidden = num_neurons_hidden;
}
void FannTraining::setDesiredError(float desired_error)
{
this->desired_error = desired_error;
}
void FannTraining::setMaxEpochs(unsigned int max_epochs)
{
this->max_epochs = max_epochs;
}
void FannTraining::setEpochsBetweenReports(unsigned int epochs_between_reports)
{
this->epochs_between_reports = epochs_between_reports;
}
/*** Get parameters ***/
unsigned int FannTraining::getNumImput()
{
return num_input;
}
unsigned int FannTraining::getNumOutput()
{
return num_output;
}
unsigned int FannTraining::getNumLayers()
{
return num_layers;
}
unsigned int FannTraining::getNumNeuronsHidden()
{
return num_neurons_hidden;
}
float FannTraining::getDesiredError()
{
return desired_error;
}
unsigned int FannTraining::getMaxEpochs()
{
return max_epochs;
}
unsigned int FannTraining::getEpochsBetweenReports()
{
return epochs_between_reports;
}
/*Trenning Neural Network*/
void FannTraining::trainFannFromFile(char *fileName)
{
ann = fann_create_standard(num_layers, num_input,
num_neurons_hidden, num_output);
fann_set_activation_function_hidden(ann, FANN_SIGMOID_SYMMETRIC);
fann_set_activation_function_output(ann, FANN_SIGMOID_SYMMETRIC);
fann_train_on_file(ann, fileName, max_epochs, epochs_between_reports, desired_error);
}
void FannTraining::saveNeuralNetwork(char *fileName /*= "language_classify.net"*/)
{
fann_save(ann, fileName);
}
main.cpp
Kod: Zaznacz cały
#include "fanntraining.h"
int main()
{
FannTraining fannTrain();
fannTrain.trainFannFromFile("frequencies.train");
}
Kod: Zaznacz cały
g++ -c -Wall fanntraining.cpp -lfann
Kod: Zaznacz cały
g++ -c -Wall main.cpp -lfann
Kod: Zaznacz cały
main.cpp: In function ‘int main()’:
main.cpp:6:13: error: request for member ‘trainFannFromFile’ in ‘fannTrain’, which is of non-class type ‘FannTraining()’

Trzeba było stworzyć wskaźnik a nie obiekt
