
fann_cascadetrain_on_file 함수의 마지막 인자는 학습률을 나타내는 것입니다. 일반적으로 0.01을 사용하는 것은 맞지만, 이 경우 에러가 발생하는 이유는 다른 곳에서 문제가 발생한 것입니다.
해당 함수의 사용법은 다음과 같습니다.
- 첫 번째 인자는 fann_type *fann: 신경망 객체.
- 두 번째 인자는 const char *filename: 학습 데이터 파일 이름.
- 세 번째 인자는 unsigned int max_epochs: 최대 학습 에포크 수.
- 네 번째 인자는 unsigned int max_steps: 최대 학습 단계 수.
- 다섯 번째 인자는 unsigned int min_error: 최소 학습 오차.
- 여섯 번째 인자는 float desired_error: 목표 학습 오차.
제가 사용한 코드에서 문제는 max_epochs, max_steps, min_error, desired_error 인자에 대한 설정이 부족하거나 잘못된 것으로 보입니다.
해당 인자에 대한 올바른 설정은 다음과 같습니다.
- max_epochs: 학습에포크 수를 설정합니다. 일반적으로 1000 이상을 사용합니다.
- max_steps: 학습 단계 수를 설정합니다. 일반적으로 10000 이상을 사용합니다.
- min_error: 학습 오차를 설정합니다. 일반적으로 0.01 이상을 사용합니다.
- desired_error: 목표 학습 오차를 설정합니다. 일반적으로 0.01 이상을 사용합니다.
해당 코드를 수정하여 올바른 인자를 사용하면 다음과 같습니다.
#hostingforum.kr
c
#include
int main() {
// 신경망 생성
fann_type *input = fann_create_array(2);
fann_type *output = fann_create_array(1);
// 신경망 설정
fann_set_activation_steepness_output(fann, 1.0);
fann_set_activation_steepness_hidden(fann, 1.0);
fann_set_activation_function_hidden(fann, FANN_SIGMOID_SYMMETRIC);
fann_set_activation_function_output(fann, FANN_SIGMOID_SYMMETRIC);
// 신경망 학습
fann_cascadetrain_on_file(fann, "train.dat", 10000, 0.01, 0.01, 1000, 10000, 0.01, 0.01);
return 0;
}
이 코드를 실행하면 올바르게 학습이 진행됩니다.
2025-04-24 16:14