示例#1
0
array vec2array(double_vec& vec)
{	npy_intp n = static_cast<npy_intp>( vec.size() );
	PYCPPAD_ASSERT( n >= 0 , "");

	object obj(handle<>( PyArray_SimpleNew(1, &n, NPY_DOUBLE) ));
	double *ptr = static_cast<double*> ( PyArray_DATA (
		reinterpret_cast<PyArrayObject*> ( obj.ptr() )
	));
	for(size_t i = 0; i < vec.size(); i++){
		ptr[i] = vec[i];
	}
	return  static_cast<array>( obj );
}
示例#2
0
文件: ann.cpp 项目: neoz/antiaim
bool ann::get_output(double_vec& output)
{
    uint output_layer = m_layer_layout.size() - 1;

    if (output.size() != m_layer_layout[output_layer])
        return false;

    layer_offset& last_layer = m_layer_offsets[output_layer];
    uint outpuc_off = last_layer.second;

    for (size_t i = 0; i < output.size(); i++) {
        output[i] = m_outputs[outpuc_off];
        outpuc_off++;
    }

    return true;
}
示例#3
0
文件: ann.cpp 项目: neoz/antiaim
// net output error
double ann::e_error(double_vec tk, double_vec ok)
{
    double err = 0;

    for (size_t i = 0; i < tk.size(); i++)
        err += pow(tk[i] - ok[i], 2);

    return err / 2;
}
示例#4
0
文件: ann.cpp 项目: neoz/antiaim
bool ann::calculate(const double_vec& input)
{
    if (input.size() != m_layer_layout[0])
        return false;

    for (size_t i = 0; i < input.size(); i++)
        m_outputs[i] = sigma(input[i]);

    for (size_t curr_layer = 1; curr_layer < m_layer_layout.size(); curr_layer++) {
        layer_offset& p_off = m_layer_offsets[curr_layer - 1];
        layer_offset& c_off = m_layer_offsets[curr_layer];

        uint t_weighc_off = c_off.first;
        uint t_outpuc_off = c_off.second;

        for (uint t_node = 0; t_node < m_layer_layout[curr_layer]; t_node++) {
            uint p_outpuc_off = p_off.second;

            double sum = 0;

            uint node_num = m_layer_layout[curr_layer - 1] + m_bias;

            for (uint p_node = 0; p_node < node_num; p_node++) {
                sum += m_outputs[p_outpuc_off] * m_weights[t_weighc_off];

                p_outpuc_off++;
                t_weighc_off++;
            }

            m_outputs[t_outpuc_off] = sigma(sum);

            t_outpuc_off++;
        }
    }

    return true;
}