首页 Paddle框架 帖子详情
fluid 如何获取特定层的参数 ?
收藏
快速回复
Paddle框架 问答深度学习模型训练 3620 6
fluid 如何获取特定层的参数 ?
收藏
快速回复
Paddle框架 问答深度学习模型训练 3620 6
在训练好一个模型之后,想打印模型的参数类似TF里面,w = session.run([fc1.W])
然后直接获取到了第一层FClayer的W矩阵,fluid有类似的接口吗?
0
收藏
回复
全部评论(6)
时间顺序
A
AIStudio782994
#2 回复于2018-05

可以用

scope.find_var(name)

0
回复
A
AIStudio782994
#3 回复于2018-05

请问有具体的例子吗?
假定我要输出FC1的参数

import paddle.fluid as fluid
x = fluid.layers.data(name='x', shape=[5], dtype='float32'),
fc1 = fluid.layers.fc(input=x, size=128, act='relu')
place = fluid.CPUPlace()
exe = fluid.Executor(place)
exe.run(fluid.default_startup_program())

0
回复
A
AIStudio785504
#4 回复于2018-05

https://github.com/PaddlePaddle/Paddle/blob/develop/python/paddle/fluid/tests/unittests/test_beam_search_op.py#L49
参考这个例子,需要对fc的参数指定一个名字,然后用名字获取值

0
回复
A
AIStudio782994
#5 回复于2018-05

import paddle.fluid as fluid
from paddle.fluid.param_attr import ParamAttr
x = fluid.layers.data(name='x', shape=[5], dtype='float32'),                         
param_attr = ParamAttr(name='target_fc')
bias_attr = ParamAttr(name='target_fc_b')
fc1 = fluid.layers.fc(input=x, size=128, act='relu', param_attr=param_attr, bias_attr=bias_attr)
scope = fluid.executor.global_scope()
 
# get tensor
ret = scope.find_var("target_fc").get_tensor()
print(ret)           
place = fluid.CPUPlace()
exe = fluid.Executor(place)
exe.run(fluid.default_startup_program())
错误提示

Traceback (most recent call last):
  File "test.py", line 12, in
    ret = scope.find_var("target_fc").get_tensor()
AttributeError:
'NoneType' object has no attribute 'get_tensor'

0
回复
A
AIStudio785504
#6 回复于2018-05

program还没run的时候,数据是没有初始化的

0
回复
A
AIStudio782994
#7 回复于2018-05

问题搞定~我补充一下完整的代码,谢谢解答:)

import paddle.fluid as fluid
from paddle.fluid.param_attr import ParamAttr
x = fluid.layers.data(name='x', shape=[5], dtype='float32'),                         
param_attr = ParamAttr(name='target_fc')
bias_attr = ParamAttr(name='target_fc_b')
fc1 = fluid.layers.fc(input=x, size=128, act='relu', param_attr=param_attr, bias_attr=bias_attr)
 
# get tensor
place = fluid.CPUPlace()
exe = fluid.Executor(place)
exe.run(fluid.default_startup_program())
ret = fluid.global_scope().find_var("target_fc").get_tensor()
import numpy as np
ret = np.array(ret)
print (ret.shape)
print(ret)
 

0
回复
需求/bug反馈?一键提issue告诉我们
发现bug?如果您知道修复办法,欢迎提pr直接参与建设飞桨~
在@后输入用户全名并按空格结束,可艾特全站任一用户