예제 #1
0
    PPZK_QueryIC accumWitness(const R1Witness<Fr>& witness) const {
        G1 base = m_base;
        std::vector<G1> encoded_terms;

        const std::size_t
            wsize = witness.size(),
            tsize = input_size();

        if (wsize < tsize) {
            base = base + multiExp(
                std::vector<G1>(m_encoded_terms.begin(),
                                m_encoded_terms.begin() + wsize),
                *witness);

            encoded_terms = std::vector<G1>(m_encoded_terms.begin() + wsize,
                                            m_encoded_terms.end());

        } else if (wsize > tsize) {
            base = base + multiExp(m_encoded_terms,
                                   *witness.truncate(tsize));

        } else {
            base = base + multiExp(m_encoded_terms,
                                   *witness);
        }

        return PPZK_QueryIC(base, encoded_terms);
    }
예제 #2
0
 virtual void _apply(const AzPmat *m_inp, AzPmat *m_out) const {
   m_out->reform(m_inp->rowNum(), m_inp->colNum()/input_size()*output_size()); 
   if      (p.ptyp == AzpPoolingDflt_Avg) upward_avg(m_inp, m_out); 
   else if (p.ptyp == AzpPoolingDflt_Max) apply_max(m_inp, m_out); 
   else if (p.ptyp == AzpPoolingDflt_L2)  apply_l2(m_inp, m_out); 
   else if (p.ptyp == AzpPoolingDflt_None) upward_asis(m_inp, m_out); 
 }
예제 #3
0
 virtual void _upward(const AzPmat *m_inp, AzPmat *m_out) {  
   int r_num = m_inp->rowNum(); 
   int c_num = m_inp->colNum()/input_size()*output_size(); 
   m_out->reform(r_num, c_num); 
   if      (p.ptyp == AzpPoolingDflt_Avg) upward_avg(m_inp, m_out); 
   else if (p.ptyp == AzpPoolingDflt_Max) upward_max(m_inp, m_out); 
   else if (p.ptyp == AzpPoolingDflt_L2)  upward_l2(m_inp, m_out); 
   else if (p.ptyp == AzpPoolingDflt_None) upward_asis(m_inp, m_out); 
 }
예제 #4
0
 virtual void downward(const AzPmat *m_lossd_after, AzPmat *m_lossd_before) const {
   int r_num = m_lossd_after->rowNum(); 
   int c_num = m_lossd_after->colNum()/output_size()*input_size(); 
   m_lossd_before->reform(r_num, c_num); 
   if      (p.ptyp == AzpPoolingDflt_Avg) downward_avg(m_lossd_after, m_lossd_before); 
   else if (p.ptyp == AzpPoolingDflt_Max) downward_max(m_lossd_after, m_lossd_before); 
   else if (p.ptyp == AzpPoolingDflt_L2)  downward_l2(m_lossd_after, m_lossd_before); 
   else if (p.ptyp == AzpPoolingDflt_None) downward_asis(m_lossd_after, m_lossd_before); 
 }
void VstoneCameraUndistortionParam::copyParams(VstoneCameraUndistortionParam &dst) const
{
	dst.input_size(input_size());
	dst.output_size(output_size());
	dst.center(center());
	dst.r1(r1());
	dst.r2(r2());
	dst.offset_th(offset_th());
}
예제 #6
0
 inline void apply_max(const AzPmat *m_inp, AzPmat *m_out) const {
   app.pooling_max(m_inp, input_size(), m_out, &pia2_out2inp, NULL); 
 }
예제 #7
0
 /*---  max pooling  ---*/
 inline void upward_max(const AzPmat *m_inp, AzPmat *m_out) {
   pia_chosen.alloc(m_out->size()); 
   pia_chosen.set(-1); 
   app.pooling_max(m_inp, input_size(), m_out, &pia2_out2inp, &pia_chosen); 
 }
예제 #8
0
 inline void apply_l2(const AzPmat *m_inp, AzPmat *m_out) const {
   app.pooling_l2(m_inp, input_size(), m_out, &pia2_out2inp); 
 }
예제 #9
0
 /*---  l2 pooling  ---*/
 inline void upward_l2(const AzPmat *m_inp, AzPmat *m_out) {
   app.pooling_l2(m_inp, input_size(), m_out, &pia2_out2inp); 
   m_inp_save.set(m_inp); 
   m_out_save.set(m_out); 
 }
예제 #10
0
 /*---  average pooling  ---*/
 inline void upward_avg(const AzPmat *m_inp, AzPmat *m_out) const {
   app.pooling_avg(m_inp, input_size(), m_out, &pia2_out2inp); 
 }
예제 #11
0
	virtual SeqIterator input_seq_rbegin() const
	{
		return input_size() ? inputActivations.rbegin(directions) : outputActivations.rbegin(directions);
	}
예제 #12
0
	virtual const View<const size_t> input_seq_shape() const
	{
		return input_size() ? inputActivations.seq_shape() : output_seq_shape();
	}