Generates a single net that uses While operator
| 675 | |
| 676 | |
| 677 | class _RunWhileNet(NetBuilder): |
| 678 | """ |
| 679 | Generates a single net that uses While operator |
| 680 | """ |
| 681 | def __init__(self, name=None): |
| 682 | NetBuilder.__init__(self, name=name, _use_control_ops=True) |
| 683 | self._cond_builder = None |
| 684 | |
| 685 | def __exit__(self, type, *args): |
| 686 | if type is None: |
| 687 | assert self._cond_builder, \ |
| 688 | 'Condition builder must be specified in While op' |
| 689 | |
| 690 | _cond_blob = self._cond_builder._cond_blob |
| 691 | _cond_net = self._cond_builder._cond_net |
| 692 | |
| 693 | loop_body = self._children |
| 694 | self._reset_children() |
| 695 | loop_body_net = NetBuilder.merge_nets( |
| 696 | loop_body, self._lexical_scope) |
| 697 | if not loop_body_net: |
| 698 | loop_body_net = core.Net('empty_loop_body_net') |
| 699 | |
| 700 | while_net = core.Net(self.name + '/while_net') |
| 701 | add_while_op(while_net, _cond_blob, self._lexical_scope, |
| 702 | loop_body_net, _cond_net) |
| 703 | |
| 704 | self._current_net = while_net |
| 705 | self._children = [while_net] |
| 706 | NetBuilder.__exit__(self, type, *args) |
| 707 | |
| 708 | |
| 709 | class _RunWhileCondition(NetBuilder): |
no outgoing calls
no test coverage detected
searching dependent graphs…