Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
机器未来
Paddle
提交
e635e3fd
P
Paddle
项目概览
机器未来
/
Paddle
与 Fork 源项目一致
Fork自
PaddlePaddle / Paddle
通知
1
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
1
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
P
Paddle
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
1
Issue
1
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
e635e3fd
编写于
9月 20, 2017
作者:
R
ranqiu
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Update faq of the doc
上级
2ba70f5d
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
24 addition
and
25 deletion
+24
-25
doc/faq/index_cn.rst
doc/faq/index_cn.rst
+24
-25
未找到文件。
doc/faq/index_cn.rst
浏览文件 @
e635e3fd
...
...
@@ -322,33 +322,12 @@ pip uninstall py_paddle paddle
pip install python/dist/paddle*.whl && pip install ../paddle/dist/py_paddle*.whl
16. 如何加载预训练embedding参数
------------------------------
设置embedding的参数属性 :code:`is_static=True`,使embedding参数在训练过程中保持不变,在创建parameters后,使用 :code:`parameters.set()` 加载预训练参数。
.. code-block:: python
def load_parameter(file_name, h, w):
with open(file_name, 'rb') as f:
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))
17. PaddlePaddle存储的参数格式是什么,如何和明文进行相互转化
16. PaddlePaddle存储的参数格式是什么,如何和明文进行相互转化
---------------------------------------------------------
PaddlePaddle保存的
二进制参数文件内容由16位头信息和网络参数两部分组成。头信息中,第一位固定为0,第二位为4,在使用double精度时,第二位为8,第三位记录共有多少个数值
。
PaddlePaddle保存的
模型参数文件内容由16字节头信息和网络参数两部分组成。头信息中,1~4字节表示PaddlePaddle版本信息;5~8字节表示每个参数占用的字节数,当保存的网络参数为float类型时为4,double类型时为8;9~16字节表示保存的参数总个数
。
将PaddlePaddle保存的
二进制参数还原回明文时,先跳过PaddlePaddle模型参数文件的头信息,再提取网络参数,
示例如下:
将PaddlePaddle保存的
模型参数还原回明文时,可以使用相应数据类型的 :code:`numpy.array` 加载具体网络参数,此时需要跳过PaddlePaddle模型参数文件的头信息。一般情况下,PaddlePaddle保存的模型参数数据类型为float,所以在使用 :code:`numpy.array` 时一般设置 :code:`dtype=float32` 。
示例如下:
.. code-block:: python
...
...
@@ -361,7 +340,7 @@ PaddlePaddle保存的二进制参数文件内容由16位头信息和网络参数
fmt="%.6f", delimiter=",")
将明文参数转化为PaddlePaddle可加载的模型参数时,先根据参数规模写入头信息,再写入具体网络参数。以下为将随机生成的矩阵转化为PaddlePaddle可加载的模型参数示例:
将明文参数转化为PaddlePaddle可加载的模型参数时,先根据
数据类型和
参数规模写入头信息,再写入具体网络参数。以下为将随机生成的矩阵转化为PaddlePaddle可加载的模型参数示例:
.. code-block:: python
...
...
@@ -371,3 +350,23 @@ PaddlePaddle保存的二进制参数文件内容由16位头信息和网络参数
param = np.float32(np.random.rand(height, width))
with open(param_file, "w") as fparam:
fparam.write(header + param.tostring())
17. 如何加载预训练embedding参数
------------------------------
设置embedding的参数属性 :code:`is_static=True`,使embedding参数在训练过程中保持不变,从模型文件将预训练参数载入 :code:`numpy.array`,在创建parameters后,使用 :code:`parameters.set()` 加载预训练参数。PaddlePaddle保存的模型参数文件前16字节为头信息,用户将参数载入 :code:`numpy.array` 时须从第17字节开始。
.. code-block:: python
def load_parameter(file_name, h, w):
with open(file_name, 'rb') as f:
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))
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录