训练好了一个网络,想要查看网络里面参数是否经过BP算法优化过,可以直接读取网络里面的参数,如果一直是随机初始化的值,则证明训练代码有问题,需要改。下面介绍如何直接读取网络的weight 和 bias。
(1) 获取参数的变量名。可以使用一下函数获取变量名:
def vars_generate1(self,scope_name_var):
return [var for var in tf.global_variables() if scope_name_var in var.name ]
输入你想要读取的变量的一部分的名称(scope_name_var),然后通过这个函数返回一个List,里面是所有含有这个名称的变量。
(2) 利用session读取变量的值:
def get_weight(self):
full_connect_variable = self.vars_generate1("pred_network/full_connect/l5_conv")
with tf.Session() as sess:
sess.run(tf.global_variables_initializer()) ##一定要先初始化变量
print(sess.run(full_connect_variable[0]))
之后如果想要看参数随着训练的变化,你可以将这些参数保存到一个txt文件里面查看。