コード例 #1
0
    void backward( ccube_p<real> const & g )
    {
        guard gg(m);
        ZI_ASSERT(last_input);
        in_nodes->backward(in_num,
                           convolve_sparse_inverse(*g,
                                                   filter_.W(),
                                                   filter_stride));

        pending_
            = manager.schedule_unprivileged(&filter_ds_edge::do_update, this, g);
    }
コード例 #2
0
inline void convolve_sparse_inverse_add( cube<T> const & a,
                                         cube<T> const & b,
                                         vec3i const & s,
                                         cube<T> & r ) noexcept
{
    if ( s == vec3i::one )
    {
        convolve_inverse_add(a,b,r);
        return;
    }

    auto radd = convolve_sparse_inverse(a,b,s);
    r += *radd;

}
コード例 #3
0
ファイル: filter_edge.hpp プロジェクト: Nuzhny007/znn-release
    void backward( ccube_p<real> const & g )
    {
        ZI_ASSERT(last_input);
        if ( in_nodes->is_input() )
        {
            in_nodes->backward(in_num, cube_p<real>());
        }
        else
        {
            in_nodes->backward(in_num,
                               convolve_sparse_inverse(*g,
                                                       filter_.W(),
                                                       filter_stride));
        }

        pending_
            = manager.schedule_unprivileged(&filter_edge::do_update, this, g);
    }
コード例 #4
0
inline cube_p<T> convolve_sparse_inverse( ccube_p<T> const & a,
                                          ccube_p<T> const & b,
                                          vec3i const & s )
{
    return convolve_sparse_inverse(*a,*b,s);
}