connect_program.md 1.8 KB
Newer Older
W
wuzewu 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55
# paddlehub.connect_program

### hub.connect_program
```python
hub.connect_program(
    pre_program,
    next_program,
    input_dict=None,
    inplace=True):
```
connect_program用于串行连接两个Program来生成一个新的Program,例如可用于支持**py_reader输入方式**的计算图连接等。py_reader本身会创建一个数据输入的计算图,而预训练模型本身也是一个计算图,connect_program接口用于将输入图与预训练模型图进行连接。

### 参数
* `pre_program`: 待进行串接的Program,串接后位于首部
* `next_program`: 待进行串接的Program,串接后位于尾部
* `input_dict`: 一个由 {str, Variable} 键值对组成的dict,用于指定将pre_program和next_program中的哪些Variable进行连接,dict的key为pre_program中的变量名(str),dict的value为next_program中的变量实例(Variable)
* `inplace`: 是否直接在pre_program上进行串接操作。如果为True,则会在pre_program上进行串接操作。如果为False,则会生成一个新的Program用于串接。默认为True

### 返回

`Program`

### 示例

```python
import paddlehub as hub
import paddle.fluid as fluid

module = hub.Module(name="mobilenet_v2_imagenet")
inputs, outputs, program = module.context(trainable=True)
image = inputs["image"]
feature_map = outputs["feature_map"]

main_program = fluid.Program()

with fluid.program_guard(main_program):
    py_reader = fluid.layers.py_reader(
        capacity=16,
        shapes=[image.shape, [-1, 1]],
        lod_levels=[0, 0],
        dtypes=["float32", "int64"],
        use_double_buffer=True)

    py_image, py_label = fluid.layers.read_file(py_reader)

    input_dict = {
        image.name: py_image
    }

    hub.connect_program(
        pre_program=main_program,
        next_program=program,
        input_dict=input_dict,
        inplace=True)
```