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); }
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); }
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); }
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()); }
inline void apply_max(const AzPmat *m_inp, AzPmat *m_out) const { app.pooling_max(m_inp, input_size(), m_out, &pia2_out2inp, NULL); }
/*--- 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); }
inline void apply_l2(const AzPmat *m_inp, AzPmat *m_out) const { app.pooling_l2(m_inp, input_size(), m_out, &pia2_out2inp); }
/*--- 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); }
/*--- 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); }
virtual SeqIterator input_seq_rbegin() const { return input_size() ? inputActivations.rbegin(directions) : outputActivations.rbegin(directions); }
virtual const View<const size_t> input_seq_shape() const { return input_size() ? inputActivations.seq_shape() : output_seq_shape(); }