使用Tf Estimator时如何获得可训练的变量计数?

时间:2018-11-05 06:10:46

标签: python tensorflow

我使用tf估算器框架创建了CNN分类器模型。但是,我无法访问模型中定义的变量。 tf.trainable_variables()始终返回0。   如何使用tf估算器访问变量?特别是,如何获得参数总数的计数(加总所有变量的维数。

谢谢, 哈罗德

2 个答案:

答案 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_nameshttps://www.tensorflow.org/api_docs/python/tf/estimator/Estimator#get_variable_value

注意:您必须先创建图形,然后才能获取变量。

答案 1 :(得分:0)

如上所述,您应该使用:

一旦有了变量,就可以使用以下方法之一来获取估计器参数的总数。

  • 将每个变量的形状暗淡与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()])