半熟芝士鸭233 2021-05-27 11:16 采纳率: 100%
浏览 30
已采纳

机器的深度学习 c语言

深度学习的作业,但是小白不是很理解,作业内容应该是需要机器自动调整training里的参数来提高准确率,但是这个应该怎么写呢?是需要用某个算法还是全部自己敲出来呢?

training寒素和main函数是这样的:

static void training()
{
    int no_of_hiddens = 5*5;
    int hidden_layers=3;
    int no_of_outputs=1;
    int itt,i,index;
    unsigned int random_seed = 123;
    char filename[256];
    char title[256];
    char weights_filename[256];
    int weights_image_width = 480;
    int weights_image_height = 800;
    float error_threshold_percent[] = { 1.6f, 0.8f, 0.8f, 11.0f };
    float v;
    const int logging_interval = 40000;

    current_data_set = data_set;

    sprintf(weights_filename,"%s","weights.png");
    sprintf(title, "%s", TITLE);

    /* create the learner */
    deeplearn_init(&learner,
                   no_of_inputs, no_of_hiddens,
                   hidden_layers,
                   no_of_outputs,
                   error_threshold_percent,
                   &random_seed);

    /* set learning rate */
    deeplearn_set_learning_rate(&learner, 0.2f);

    /* set percentage of dropouts */
    deeplearn_set_dropouts(&learner, 0.001f);

    /* perform pre-training with an autocoder */
    itt = 0;
    while (learner.current_hidden_layer < hidden_layers) {
        /* index of the example to be used */
        index = rand_num(&random_seed)%no_of_examples;

        /* load the data set inputs into the network inputs */
        for (i = 0; i < fields_per_example-1; i++) {
            v = current_data_set[index*fields_per_example + i];
            v = data_to_neuron_value(i, v);
            deeplearn_set_input(&learner, i, v);
        }

        /* update the learner */
        deeplearn_update(&learner);

        itt++;
        if ((itt % logging_interval == 0) && (itt>0)) {
            printf("%d: %.5f%%\n",
                   learner.current_hidden_layer, learner.BPerror);

            /* save a graph */
            sprintf(filename,"%s","training_error.png");
            deeplearn_plot_history(&learner,
                                   filename, title,
                                   1024, 480);
            /* plot the weights */
            if ((&learner)->autocoder != 0) {
                bp_plot_weights((&learner)->autocoder,
                                weights_filename,
                                weights_image_width,
                                weights_image_height,
                                0);
            }
        }
    }

    /* save a graph */
    sprintf(filename,"%s","training_error.png");
    deeplearn_plot_history(&learner,
                           filename, title,
                           1024, 480);
    /* plot the weights */
    bp_plot_weights((&learner)->net,
                    weights_filename,
                    weights_image_width,
                    weights_image_height,
                    0);

    /* perform the final training between the last
       hidden layer and the outputs */
    while (learner.training_complete == 0) {
        /* index of the example to be used */
        index = rand_num(&random_seed)%no_of_examples;

        /* load the data set inputs into the network inputs */
        for (i = 0; i < fields_per_example-1; i++) {
            v = current_data_set[index*fields_per_example + i];
            v = data_to_neuron_value(i, v);
            deeplearn_set_input(&learner, i, v);
        }

        /* set the desired outputs */
		v = current_data_set[index*fields_per_example + fields_per_example - 1];
		v = data_to_neuron_value(fields_per_example - 1, v);
		deeplearn_set_output(&learner, 0, v);

        /* update the learner */
        deeplearn_update(&learner);

        itt++;
        if ((itt % logging_interval == 0) && (itt>0)) {
            printf("Final: %.5f  %.2f%%/%.2f%%\n", learner.BPerror,
                   get_performance(&learner,
                                   data_set,no_of_examples),
                   get_performance(&learner,
                                   test_data,no_of_test_examples));

            /* save a graph */
            sprintf(filename,"%s","training_error.png");
            deeplearn_plot_history(&learner,
                                   filename, title,
                                   1024, 480);
            /* plot the weights */
            if ((&learner)->autocoder!=0) {
                bp_plot_weights((&learner)->autocoder,
                                weights_filename,
                                weights_image_width,
                                weights_image_height,
                                0);
            }
        }
    }

    /* save a graph */
    sprintf(filename,"%s","training_error.png");
    deeplearn_plot_history(&learner,
                           filename, title,
                           1024, 480);
    /* plot the weights */
    bp_plot_weights((&learner)->net,
                    weights_filename,
                    weights_image_width,
                    weights_image_height,
                    0);

    printf("Training performance: %.4f%%\nTest Performance: %.4f%%\n",
           get_performance(&learner,data_set,no_of_examples),
           get_performance(&learner,test_data,no_of_test_examples));
}


/**
* @brief Main function
*/
int main(int argc, char* argv[])
{
    /* load the data */
    printf("Loading data set\n");
    no_of_examples =
        load_data(DATA_FILE,
                  data_set, MAX_EXAMPLES,
                  &fields_per_example);

    /* create a test data set */
    printf("Creating test data set\n");
    no_of_test_examples =
        create_test_data(data_set,
                         &no_of_examples,
                         fields_per_example,
                         test_data);

    no_of_inputs = fields_per_example-1;

    printf("Number of training examples: %d\n",no_of_examples);
    printf("Number of test examples: %d\n",no_of_test_examples);
    printf("Number of fields: %d\n",fields_per_example);

    training();

    return 1;
}

运行之后的结果是这样子的:

实在是不太理解要怎么实现深度学习,看了很多博客大部分都是在讲原理,没有说要怎么写的(哭,希望有大佬帮帮!谢谢大家!!!

  • 写回答

2条回答 默认 最新

  • 半熟芝士鸭233 2021-06-23 16:25
    关注

    已经解决,有相同问题可以交流

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 c语言怎么用printf(“\b \b”)与getch()实现黑框里写入与删除?
  • ¥20 怎么用dlib库的算法识别小麦病虫害
  • ¥15 华为ensp模拟器中S5700交换机在配置过程中老是反复重启
  • ¥15 java写代码遇到问题,求帮助
  • ¥15 uniapp uview http 如何实现统一的请求异常信息提示?
  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?