我使用tf估算器框架创建了CNN分类器模型。但是,我无法访问模型中定义的变量。 tf.trainable_variables()始终返回0。 如何使用tf估算器访问变量?特别是,如何获得参数总数的计数(加总所有变量的维数。
谢谢, 哈罗德
答案 0 :(得分:0)
您可以使用type A = A
type B = B
type C () = class end
let zeta _ _ = C ()
let omega _ _ = C ()
type C with
static member (><) (_:C, alpha : A) = fun (beta : B) -> zeta alpha beta : C
static member (><) (_:C, beta : B) = fun (alpha : A) -> omega alpha beta: C
let inline (><) x y = (Unchecked.defaultof<C> >< x) y
// Test
let x = A >< B
// val x : C
获取所有变量名称,
并使用get_variable_names()
按名称获取变量值。
请使用以下代码:
get_variable_value(name)
更多信息是https://www.tensorflow.org/api_docs/python/tf/estimator/Estimator#get_variable_names 和 https://www.tensorflow.org/api_docs/python/tf/estimator/Estimator#get_variable_value。
注意:您必须先创建图形,然后才能获取变量。
答案 1 :(得分:0)
如上所述,您应该使用:
tf.estimator.Estimator.get_variable_names()
以获取所有估计量变量tf.estimator.Estimator.get_variable_value(name)
以获取变量值一旦有了变量,就可以使用以下方法之一来获取估计器参数的总数。
将每个变量的形状暗淡与numpy.prod
相乘,然后求和:
sum([np.prod(est.get_variable_value(var).shape) for var in est.get_variable_names()])
或用numpy.ndarray.size
求和变量的大小,然后求和:
sum([est.get_variable_value(var).size for var in est.get_variable_names()])