예제 #1
0
 vector<int> get_out_coords(const vector<int> &inCoords) {
     vector<int> outCoords;
     assert(inCoords.size() == activeDims.size());
     for (int i = 0; i < inCoords.size(); ++i) {
         if (activeDims[i]) {
             outCoords += inCoords[i];
         }
     }
     assert(outCoords.size() == num_seq_dims());
     return outCoords;
 }
예제 #2
0
 virtual void print(ostream& out = cout) const {
   out << typeid(*this).name() << " ";
   Named::print(out);
   out << " " << num_seq_dims() << "D";
   if (directions.size()) {
     out << " (";
     LOOP(int d, directions) {
       out << ((d > 0) ? "+" : "-");
     }
     out << ")";
   }
예제 #3
0
 virtual void start_sequence() {
     outSeqShape.clear();
     for (int i = 0; i < activeDims.size(); ++i) {
         if (activeDims[i]) {
             outSeqShape += source->output_seq_shape()[i];
         }
     }
     assert(outSeqShape.size() == num_seq_dims());
     inputActivations.reshape(source->output_seq_shape(), 0);
     outputActivations.reshape(outSeqShape, 0);
     reshape_errors();
 }