神经网络中的双周期输入/输出数据集

问题描述 投票:0回答:0

我正在尝试 FANN 进行简单的 NN 训练以映射两个正弦波。

#include <stdio.h>
#include <fann.h>
#define PI 3.141593

int main()
{
    const unsigned int num_input = 1;
    const unsigned int num_output = 1;
    const unsigned int num_layers = 3;
    const unsigned int num_neurons_hidden = 3;
    const float desired_error = 0.0f;
    const unsigned int max_epochs = 100000;
    const unsigned int epochs_between_reports = 1000;
    const unsigned int samples = 1000;

    struct fann *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);
    struct fann_train_data *data = fann_create_train(samples, num_input, num_output);

    // Creating sample data by two sin waves
    for (unsigned int i = 0; i < samples; i++) {
        float x = (float) i / 100.0f;
        float input = sin(x * 0.01f * PI);
        float output = sin(x * 0.083f * PI);
        data->input[i][0] = input;
        data->output[i][0] = output;
    }

    fann_shuffle_train_data(data);
    fann_train_on_data(ann, data, max_epochs, epochs_between_reports, desired_error);
    fann_destroy_train(data);
    fann_destroy(ann);
    return 0;
}

它确实对部分波的曲率起作用,但是如果将样本数量从

1000
增加到说
10000
,当正弦波出现时,模型不会学习。

我们如何设计周期性输入/输出的神经网络架构?

c deep-learning neural-network fann
© www.soinside.com 2019 - 2024. All rights reserved.