fluid.global_scope().find_var 使用问题
Created by: lgone2000
下面程序中, print(list(fluid.default_main_program().list_vars())) 可以正确输出所有变量。 但 print('v=', fluid.global_scope().find_var('fc.w_0')) 返回为None 执行 exe.run(fluid.default_startup_program()) 后有可以正常输出变量。
难道var缺省不在global_scope中?如果要求必须执行startup_program, 希望能在文档中明确说明这些变量的状态,以及什么函数是在 startup_program执行后才是可用的。 否则让人混淆。 另外如果内部状态不完整情况下调用find_var ,建议扔一个异常,而不是返回None。
def test_find_var():
input = fluid.layers.data(name='input', shape=[1], dtype='float32')
fc = fluid.layers.fc(name='fc', input=input, size=10)
loss = fluid.layers.reduce_sum(input=fc)
print(list(fluid.default_main_program().list_vars()))
#will output the vars
print('v=', fluid.global_scope().find_var('fc.w_0'))
#output None
exe = fluid.Executor(fluid.CPUPlace())
exe.run(fluid.default_startup_program())
print('v=', fluid.global_scope().find_var('fc.w_0'))
#output fc.w_0