Tensorflow Estimator API:如何使用tensorflow的估计器api获得训练模型的每个节点的权重

时间:2018-03-15 18:06:32

标签: python-3.x tensorflow deep-learning jupyter-notebook tensorflow-estimator

我想获得DNNClassifier中每个层的每个节点的权重,使用tensorflow的估计器API进行训练。我发现可以在keras中获得每个节点的权重。估算器API有可能吗?谢谢你的帮助。

input_func = tf.estimator.inputs.pandas_input_fn(x=X_train,y=y_train,batch_size=10,num_epochs=1000,shuffle=True)

dnn_model = tf.estimator.DNNClassifier(hidden_units=[10,10,10],feature_columns=feat_cols,n_classes=2

model.train(input_fn,steps=6000)

我使用上面的代码来训练模型。我想进一步提取隐藏层的每个节点的权重。

1 个答案:

答案 0 :(得分:2)

是的,应该可以这样做。 您可以使用以下方法提取可训练变量名称:

train_var_names = [var.name for var in tf.trainable_variables()]

这些通常被命名为'layer-0/kernel''layer-0/bias'。然后,您可以通过估算器(我将假设从您的问题中命名为dnn_model)访问其值(在培训您的网络之后)。举个例子:

weights_0 = dnn_model.get_variable_value(train_var_names[0])