Exemple #1
0
int main(int argc, char* argv[])
{
    int input_size = 10;
    int dense_size1 = 5;
    int dense_size2 = 3;

    Container model;

    model.add(Dense(dense_size1, input_size));
    model.add(Dense(dense_size2));

    auto layer = model.get_layer();
    for (unsigned int i = 0; i < layer.size(); ++i) {
        auto dense = layer[i];
        printf("layer : %d\tdense_size : %d\t prev_dense_size : %d\n", i, dense.dense_size(), dense.get_cell(0).edge_size());
        for(unsigned int j = 0; j < dense.dense_size(); ++j) {
            auto cell = dense.get_cell(j);
            auto weight = cell.get_weight();
            auto bias = cell.get_bias();
            for(unsigned int k = 0; k < weight.size(); ++k) {
                printf("(%d,%d) : %lf\t%lf\n", j, k, weight[k], bias);
            }
        }
    }
    return 0;
}
Exemple #2
0
NeuralNetwork* Phenotype::get_network(Individual* individual) {
    NeuralNetwork* network = new NeuralNetwork();

    // Locate markers
    vector< pair<int, int> > raw_markers = get_markers(individual);
    vector< pair<int, int> > markers;
    for (int i = 0; i < raw_markers.size(); i++) {
        if (get_slice_size(individual, raw_markers[i]) >= 7) {
            markers.push_back(raw_markers[i]);
        }
    }
    
    // Create input neurons
    for (int i = 0; i < individual->input_units_; i++) {
        Neuron neuron;
            
        neuron.label_ = i;
            
        network->input_neurons_.push_back(neuron);
    }
    
    // Create hidden neurons
    for (int i = 0; i < markers.size(); i++) {
        Neuron neuron;
            
        neuron.label_ = get_label(individual, markers[i]);
        
        neuron.bias_ = get_bias(individual, markers[i]);
        
        neuron.output_ = neuron.bias_;
            
        network->hidden_neurons_.push_back(neuron);
    }
    
    // Create output neurons
    for (int i = 0; i < individual->output_units_; i++) {
        Neuron neuron;
            
        neuron.label_ = i;
        
        neuron.bias_ = individual->genes_[(individual->genes_.size()-individual->output_units_) + i];
            
        network->output_neurons_.push_back(neuron);
    }
    
    // Create links
    for (int i = 0; i < markers.size(); i++) {
        Neuron& neuron = network->hidden_neurons_[i];

        int connections = (get_slice_size(individual, markers[i]) - 2) / 3;
        
        for (int j = 0; j < connections; j++) {
            signed char key = get_nth_key(individual, markers[i], j);
            int label = get_nth_label(individual, markers[i], j);
            signed char weight = get_nth_weight(individual, markers[i], j);
            
            // Link to input/output layer
            if (key > 0) {
                // Input
                if (label > 0) {
                    Neuron& input = network->input_neurons_[label % network->input_neurons_.size()];
                    
                    input.outputs_.push_back(&neuron);
                    neuron.inputs_.push_back(pair<signed char, Neuron*>(weight, &input));
                }
                // Output
                else {
                    Neuron& output = network->output_neurons_[abs(label) % network->output_neurons_.size()];
                    
                    neuron.outputs_.push_back(&output);
                    output.inputs_.push_back(pair<signed char, Neuron*>(weight, &neuron));
                }

            }
            // Link to hidden layer
            else {
                int hidden_label = get_hidden_label(individual, label);
                Neuron* hidden = get_closest_neuron(hidden_label, network->hidden_neurons_);
                
                hidden->outputs_.push_back(&neuron);
                neuron.inputs_.push_back(pair<signed char, Neuron*>(weight, hidden));
            }
        }
    }
    
    return network;
}
Exemple #3
0
void enc_alloc(jxr_t *p)
{
    int n, k;

    n = p->color.num_comp;
    p->mb_buf = (int**)malloc(sizeof(int*) * n);
    p->mb = (int**)malloc(sizeof(int*) * n);
    p->mb_dclp_buf = (int**)malloc(sizeof(int*) * n);
    p->mb_dclp = (int**)malloc(sizeof(int*) * n);
    p->pred_dclp = (int**)malloc(sizeof(int*) * n);
    p->hp = (int***)malloc(sizeof(int**) * n);
    p->dclp_buf = (ringbuf_t*)malloc(sizeof(ringbuf_t) * n);
    p->cbphp_buf = (ringbuf_t*)malloc(sizeof(ringbuf_t) * n);
    p->lpqp_idx_buf.buf = (int*)malloc(sizeof(int) * (p->param.mb_width + 1));
    p->lpqp_idx_buf.p = p->lpqp_idx_buf.buf;
    p->lpqp_idx_buf.size = p->param.mb_width + 1;
    p->lpqp_idx_buf.step = 1;

    for (n = 0; n < p->color.num_comp; n++) {
        int w = n > 0 && p->color.is_yuv42x ? 2 : 4;
        int h = n > 0 && p->color.is_yuv420 ? 2 : 4;
        
        p->mb_buf[n] = (int*)malloc(sizeof(int) * BW * BH);
        p->mb[n] = p->mb_buf[n] + 4 + BW * 4;
        p->mb_dclp_buf[n] = (int*)malloc(sizeof(int) * DCLPW * DCLPH);
        p->mb_dclp[n] = p->mb_dclp_buf[n];
        p->pred_dclp[n] = (int*)malloc(sizeof(int) * w * h);
        p->hp[n] = (int**)malloc(sizeof(int*) * w * h);
        for (k = 0; k < w * h; k++) {
            p->hp[n][k] = (int*)malloc(sizeof(int) * 4 * 4);
        }
        
        p->dclp_buf[n].buf = (int*)malloc(sizeof(int) * w * h * (p->param.mb_width + 2));
        p->dclp_buf[n].p = p->dclp_buf[n].buf;        
        p->dclp_buf[n].size = (p->param.mb_width + 2) * w;
        p->dclp_buf[n].step = w;

        p->cbphp_buf[n].buf = (int*)malloc(sizeof(int) * (p->param.mb_width + 1));
        p->cbphp_buf[n].p = p->cbphp_buf[n].buf;
        p->cbphp_buf[n].size = p->param.mb_width + 1;
        p->cbphp_buf[n].step = 1;
    }
    
    if (!get_flag(p->param.flags, FREQUENCY_MODE_CODESTREAM_FLAG)) {
        p->out = (bitbuf_t*)malloc(sizeof(bitbuf_t));
        p->out[0].buf =  (uint32_t*)malloc(sizeof(uint32_t) * p->param.width * p->param.height);
        p->out[0].p = p->out[0].buf;
        p->out[0].left = 32;
        //p->out[0].length = p->param.width * p->param.height * p->color.num_comp;
    } else {
        p->out = (bitbuf_t*)malloc(sizeof(bitbuf_t) * 4);
        for (k = 0; k < 4; k++) {
            p->out[k].buf =  (uint32_t*)malloc(sizeof(uint32_t) * p->param.width * p->param.height);
            p->out[k].p = p->out[k].buf;
            p->out[k].left = 32;
            //p->out[k].length = p->param.width * p->param.height * p->color.num_comp;
        }
    }
    
    p->color.conv_idx = get_color_conv_idx(p->param.ex_color_format,
                                           p->param.ex_bitdepth,
                                           p->param.in_color_format);
    p->color.bias = get_bias(p->param.ex_bitdepth);
    
    if (!get_flag(p->param.flags, TILING_FLAG)) {
        p->param.num_ver_tiles = 1;
        p->param.num_hor_tiles = 1;
        p->param.tile_width_in_mb = (uint16_t*)malloc(sizeof(uint16_t));
        p->param.tile_height_in_mb = (uint16_t*)malloc(sizeof(uint16_t));
        p->param.tile_width_in_mb[0] = p->param.mb_width;
        p->param.tile_height_in_mb[0] = p->param.mb_height;
    }
    
    p->step = p->param.width * n;

    //enc_image_header(p->out, &p->param);
    //enc_image_plane_header(p->out, &p->param);
    p->is_ready = 1;
}