| 1443 | } |
| 1444 | |
| 1445 | Tensor CopyColumns(const Tensor &in, const size_t start, const size_t end) { |
| 1446 | CHECK_EQ(in.nDim(), 2u); |
| 1447 | CHECK_LT(start, end); |
| 1448 | CHECK_GE(in.shape(1), end); |
| 1449 | Shape s{in.shape(0), end - start}; |
| 1450 | Tensor out(s, in.device(), in.data_type()); |
| 1451 | for (size_t row = 0; row < out.shape(0); row++) { |
| 1452 | size_t src_offset = row * in.shape(1) + start; |
| 1453 | size_t dst_offset = row * out.shape(1); |
| 1454 | CopyDataToFrom(&out, in, end - start, dst_offset, src_offset); |
| 1455 | } |
| 1456 | return out; |
| 1457 | } |
| 1458 | |
| 1459 | Tensor SliceColumns(const Tensor &in, const size_t start, const size_t end) { |
| 1460 | return CopyColumns(in, start, end); |