Update faq of doc

update-doc-pybind
ranqiu 8 years ago
parent 37faf49565
commit cabd643438

@ -325,9 +325,9 @@ pip install python/dist/paddle*.whl && pip install ../paddle/dist/py_paddle*.whl
16. PaddlePaddle存储的参数格式是什么如何和明文进行相互转化
---------------------------------------------------------
PaddlePaddle保存的模型参数文件内容由16字节头信息和网络参数两部分组成。头信息中1~4字节表示PaddlePaddle版本信息5~8字节表示每个参数占用的字节数当保存的网络参数为float类型时为4double类型时为89~16字节表示保存的参数总个数。
PaddlePaddle保存的模型参数文件内容由16字节头信息和网络参数两部分组成。头信息中1~4字节表示PaddlePaddle版本信息在多数情况下可以直接填充05~8字节表示每个参数占用的字节数当保存的网络参数为float类型时为4double类型时为89~16字节表示保存的参数总个数。
将PaddlePaddle保存的模型参数还原回明文时可以使用相应数据类型的 :code:`numpy.array` 加载具体网络参数,此时需要跳过PaddlePaddle模型参数文件的头信息。一般情况下PaddlePaddle保存的模型参数数据类型为float所以在使用 :code:`numpy.array`一般设置 :code:`dtype=float32` 。示例如下:
将PaddlePaddle保存的模型参数还原回明文时可以使用相应数据类型的 :code:`numpy.array` 加载具体网络参数,此时可以跳过PaddlePaddle模型参数文件的头信息。若在PaddlePaddle编译时未指定按照double精度编译默认情况下按照float精度计算保存的参数也是float类型。这时在使用 :code:`numpy.array` 时,一般设置 :code:`dtype=float32` 。示例如下:
.. code-block:: python
@ -340,7 +340,7 @@ PaddlePaddle保存的模型参数文件内容由16字节头信息和网络参数
fmt="%.6f", delimiter=",")
将明文参数转化为PaddlePaddle可加载的模型参数时先根据数据类型和参数规模写入头信息再写入具体网络参数。以下为将随机生成的矩阵转化为PaddlePaddle可加载的模型参数示例:
将明文参数转化为PaddlePaddle可加载的模型参数时首先构造头信息再写入网络参数。下面将随机生成的矩阵转化为可以被PaddlePaddle加载的模型参数。
.. code-block:: python
@ -351,10 +351,18 @@ PaddlePaddle保存的模型参数文件内容由16字节头信息和网络参数
with open(param_file, "w") as fparam:
fparam.write(header + param.tostring())
17. 如何加载预训练embedding参数
17. 如何加载预训练参数
------------------------------
设置embedding的参数属性 :code:`is_static=True`使embedding参数在训练过程中保持不变从模型文件将预训练参数载入 :code:`numpy.array`在创建parameters后使用 :code:`parameters.set()` 加载预训练参数。PaddlePaddle保存的模型参数文件前16字节为头信息用户将参数载入 :code:`numpy.array` 时须从第17字节开始。
* 对加载预训练参数的层,设置其参数属性 :code:`is_static=True`使该层的参数在训练过程中保持不变。以embedding层为例代码如下
.. code-block:: python
emb_para = paddle.attr.Param(name='emb', is_static=True)
paddle.layer.embedding(size=word_dim, input=x, param_attr=emb_para)
* 从模型文件将预训练参数载入 :code:`numpy.array`在创建parameters后使用 :code:`parameters.set()` 加载预训练参数。PaddlePaddle保存的模型参数文件前16字节为头信息用户将参数载入 :code:`numpy.array` 时须从第17字节开始。以embedding层为例代码如下
.. code-block:: python
@ -363,10 +371,5 @@ PaddlePaddle保存的模型参数文件内容由16字节头信息和网络参数
f.read(16) # skip header.
return np.fromfile(f, dtype=np.float32).reshape(h, w)
emb_para = paddle.attr.Param(name='emb', initial_std=0., is_static=True)
paddle.layer.embedding(size=word_dim, input=x, param_attr=emb_para)
parameters = paddle.parameters.create(my_cost)
parameters.set('emb', load_parameter(emb_param_file, 30000, 256))

Loading…
Cancel
Save