Пример #1
0
float train_networks(network *nets, int n, data d, int interval)
{
    int i;
    int batch = nets[0].batch;
    int subdivisions = nets[0].subdivisions;
    assert(batch * subdivisions * n == d.X.rows);
    pthread_t *threads = (pthread_t *) calloc(n, sizeof(pthread_t));
    float *errors = (float *) calloc(n, sizeof(float));

    float sum = 0;
    for(i = 0; i < n; ++i){
        data p = get_data_part(d, i, n);
        threads[i] = train_network_in_thread(nets[i], p, errors + i);
    }
    for(i = 0; i < n; ++i){
        pthread_join(threads[i], 0);
        //printf("%f\n", errors[i]);
        sum += errors[i];
    }
    //cudaDeviceSynchronize();
    if (get_current_batch(nets[0]) % interval == 0) {
        printf("Syncing... ");
        fflush(stdout);
        sync_nets(nets, n, interval);
        printf("Done!\n");
    }
    //cudaDeviceSynchronize();
    free(threads);
    free(errors);
    return (float)sum/(n);
}
Пример #2
0
const gchar *
get_data_f (xml_dayf *data,
            forecast  type)
{
    gchar *p, *str = NULL;

    if (data)
    {
        switch (type & 0x0F00)
        {
            case ITEMS:
                switch(type)
                {
                    case WDAY: str = data->day; break;
                    case TEMP_MIN: str = data->low; break;
                    case TEMP_MAX: str = data->hi; break;
                    default: str = g_strdup("-"); break;
                }
                break;
            case NPART:
                str = get_data_part(data->part[1], type);
                break;
            case DPART:
                str = get_data_part(data->part[0], type);
                break; 
        }
    }

    if (!str)
        str = "-";
    

    p = copy_buffer(str);
       //DBG ("value: %s", p);
    return p;
}