我想获得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)
我使用上面的代码来训练模型。我想进一步提取隐藏层的每个节点的权重。
答案 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])