| 2936 | |
| 2937 | @classmethod |
| 2938 | def create_from_proto(cls, plan_proto): |
| 2939 | assert isinstance(plan_proto, caffe2_pb2.PlanDef) |
| 2940 | plan = Plan(plan_proto.name) |
| 2941 | plan._plan.CopyFrom(plan_proto) |
| 2942 | del plan._plan.network[:] |
| 2943 | del plan._plan.execution_step[:] |
| 2944 | |
| 2945 | net_obj_dict = {} |
| 2946 | net_proto_dict = {} |
| 2947 | for net_proto in plan_proto.network: |
| 2948 | assert net_proto.name not in net_proto_dict |
| 2949 | net_proto_dict[net_proto.name] = net_proto |
| 2950 | |
| 2951 | for step_proto in plan_proto.execution_step: |
| 2952 | step = ExecutionStep.create_from_proto( |
| 2953 | step_proto, net_obj_dict, net_proto_dict) |
| 2954 | plan.AddStep(step) |
| 2955 | |
| 2956 | return plan |
| 2957 | |
| 2958 | |
| 2959 | def to_execution_step(step_or_nets, default_name=None): |