提交 fb2ad4c9 编写于 作者: Y Yu Yang

Change PythonAPI `.proto` to `.desc`

上级 7506e481
...@@ -22,7 +22,7 @@ Whenever we create a block, we need to set its parent block to the current block ...@@ -22,7 +22,7 @@ Whenever we create a block, we need to set its parent block to the current block
```python ```python
class Program(objects): class Program(objects):
def __init__(self): def __init__(self):
self.proto = core.NewProgram() # a C++ ProgramDesc pointer. self.desc = core.NewProgram() # a C++ ProgramDesc pointer.
self.blocks = vector<Block>() self.blocks = vector<Block>()
self.blocks.append(Block(self, -1)) # the global block self.blocks.append(Block(self, -1)) # the global block
self.current_block = 0 # initialized to the global block self.current_block = 0 # initialized to the global block
...@@ -57,7 +57,7 @@ A [Block](https://github.com/PaddlePaddle/Paddle/blob/develop/doc/design/block.m ...@@ -57,7 +57,7 @@ A [Block](https://github.com/PaddlePaddle/Paddle/blob/develop/doc/design/block.m
```python ```python
class Block(objects): class Block(objects):
def __init__(self, program, parent_idx): def __init__(self, program, parent_idx):
self.proto = core.NewBlock(program.proto) self.desc = core.NewBlock(program.desc)
self.program = program self.program = program
self.vars = map<string, Variable>() self.vars = map<string, Variable>()
self.ops = vector<Operator>() self.ops = vector<Operator>()
...@@ -98,11 +98,11 @@ class Operator(object): ...@@ -98,11 +98,11 @@ class Operator(object):
outputs,# dict<stirng, Variable> outputs,# dict<stirng, Variable>
attrs # dict<string, Any> attrs # dict<string, Any>
): ):
self.proto = core.NewOpDesc(block.proto, type, inputs, outputs, attrs) self.desc = core.NewOpDesc(block.desc, type, inputs, outputs, attrs)
core.infer_shape(self.proto, inputs, outputs) core.infer_shape(self.desc, inputs, outputs)
def type(self): def type(self):
return self.proto.type() return self.desc.type()
``` ```
`Operator` creates the `OpDesc` message in C++ space, so that it can call the `InferShape` function, which is in C++. `Operator` creates the `OpDesc` message in C++ space, so that it can call the `InferShape` function, which is in C++.
...@@ -124,7 +124,7 @@ class Variable(object): ...@@ -124,7 +124,7 @@ class Variable(object):
name = unique_name_generator() name = unique_name_generator()
self.name = name self.name = name
self.block = block self.block = block
self.proto = core.NewVarDesc(block.proto, name, shape, lod_level) self.desc = core.NewVarDesc(block.desc, name, shape, lod_level)
self.writer = None self.writer = None
``` ```
......
...@@ -11,18 +11,18 @@ class Variable(object): ...@@ -11,18 +11,18 @@ class Variable(object):
if name is None: if name is None:
name = Variable._unique_var_name_() name = Variable._unique_var_name_()
self.proto = self.block.proto.new_var(name) self.desc = self.block.desc.new_var(name)
if shape is not None: if shape is not None:
self.proto.set_shape(shape) self.desc.set_shape(shape)
if dtype is not None: if dtype is not None:
# TODO(yuyang18): Convert dtype from numpy.dtype # TODO(yuyang18): Convert dtype from numpy.dtype
self.proto.set_data_type(dtype) self.desc.set_data_type(dtype)
if lod_level is not None: if lod_level is not None:
# TODO(yuyang18): set_lod_level is not defined. # TODO(yuyang18): set_lod_level is not defined.
self.proto.set_lod_level(lod_level) self.desc.set_lod_level(lod_level)
self.block.vars[name] = self self.block.vars[name] = self
self.op = None self.op = None
...@@ -38,13 +38,13 @@ class Variable(object): ...@@ -38,13 +38,13 @@ class Variable(object):
class Operator(object): class Operator(object):
def __init__(self, def __init__(self,
block, block,
proto, desc,
type=None, type=None,
inputs=None, inputs=None,
outputs=None, outputs=None,
attrs=None): attrs=None):
self.block = block self.block = block
self.proto = proto self.desc = desc
if type is not None: if type is not None:
# TODO. # TODO.
pass pass
...@@ -63,31 +63,31 @@ class Operator(object): ...@@ -63,31 +63,31 @@ class Operator(object):
class Block(object): class Block(object):
def __init__(self, program, idx): def __init__(self, program, idx):
self.proto = program.proto.block(idx) self.desc = program.desc.block(idx)
self.vars = dict() # var_name --> var self.vars = dict() # var_name --> var
self.ops = collections.deque() # operator list self.ops = collections.deque() # operator list
self.program = program self.program = program
@property @property
def parent_idx(self): def parent_idx(self):
return self.proto.parent return self.desc.parent
@property @property
def idx(self): def idx(self):
return self.proto.id return self.desc.id
def create_var(self, *args, **kwargs): def create_var(self, *args, **kwargs):
return Variable(self, *args, **kwargs) return Variable(self, *args, **kwargs)
def append_op(self, *args, **kwargs): def append_op(self, *args, **kwargs):
op_proto = self.proto.append_op() op_desc = self.desc.append_op()
op = Operator(self, op_proto, *args, **kwargs) op = Operator(self, op_desc, *args, **kwargs)
self.ops.append(op) self.ops.append(op)
return op return op
def prepend_op(self, *args, **kwargs): def prepend_op(self, *args, **kwargs):
op_proto = self.proto.prepend_op() op_desc = self.desc.prepend_op()
op = Operator(self, op_proto, *args, **kwargs) op = Operator(self, op_desc, *args, **kwargs)
self.ops.appendleft(op) self.ops.appendleft(op)
return op return op
...@@ -104,7 +104,7 @@ class Program(object): ...@@ -104,7 +104,7 @@ class Program(object):
def __init__(self): def __init__(self):
assert not hasattr(self.__class__, assert not hasattr(self.__class__,
'_instance'), 'Do not call constructor directly!' '_instance'), 'Do not call constructor directly!'
self.proto = core.ProgramDesc.instance() self.desc = core.ProgramDesc.instance()
self.blocks = [Block(self, 0)] self.blocks = [Block(self, 0)]
self.current_block_idx = 0 self.current_block_idx = 0
...@@ -116,7 +116,7 @@ class Program(object): ...@@ -116,7 +116,7 @@ class Program(object):
def create_block(self): def create_block(self):
new_block_idx = len(self.blocks) new_block_idx = len(self.blocks)
self.proto.append_block(self.current_block().proto) self.desc.append_block(self.current_block().desc)
self.current_block_idx = new_block_idx self.current_block_idx = new_block_idx
self.blocks.append(Block(self, self.current_block_idx)) self.blocks.append(Block(self, self.current_block_idx))
return self.current_block() return self.current_block()
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册