Run net forward in batches. Parameters ---------- blobs : list of blobs to extract as in forward() kwargs : Keys are input blob names and values are blob ndarrays. Refer to forward(). Returns ------- all_outs : {blob name: list of blobs} dict.
(self, blobs=None, **kwargs)
| 183 | |
| 184 | |
| 185 | def _Net_forward_all(self, blobs=None, **kwargs): |
| 186 | """ |
| 187 | Run net forward in batches. |
| 188 | |
| 189 | Parameters |
| 190 | ---------- |
| 191 | blobs : list of blobs to extract as in forward() |
| 192 | kwargs : Keys are input blob names and values are blob ndarrays. |
| 193 | Refer to forward(). |
| 194 | |
| 195 | Returns |
| 196 | ------- |
| 197 | all_outs : {blob name: list of blobs} dict. |
| 198 | """ |
| 199 | # Collect outputs from batches |
| 200 | all_outs = {out: [] for out in set(self.outputs + (blobs or []))} |
| 201 | for batch in self._batch(kwargs): |
| 202 | outs = self.forward(blobs=blobs, **batch) |
| 203 | for out, out_blob in six.iteritems(outs): |
| 204 | all_outs[out].extend(out_blob.copy()) |
| 205 | # Package in ndarray. |
| 206 | for out in all_outs: |
| 207 | all_outs[out] = np.asarray(all_outs[out]) |
| 208 | # Discard padding. |
| 209 | pad = len(six.next(six.itervalues(all_outs))) - len(six.next(six.itervalues(kwargs))) |
| 210 | if pad: |
| 211 | for out in all_outs: |
| 212 | all_outs[out] = all_outs[out][:-pad] |
| 213 | return all_outs |
| 214 | |
| 215 | |
| 216 | def _Net_forward_backward_all(self, blobs=None, diffs=None, **kwargs): |