2017-07-04 47 views
1

有沒有一種方法從Tensorflow的tf.contrib.learn.DNNClassifier中提取權重矩陣?我試着查找Tensorflow網站的答案,但我相當新,所以我沒有發現任何有用的東西。如果在這裏我已經找不到明確的解釋,請提前抱歉。使用張量流的提取神經網絡權重tf.contrib.learn.DNNClassifier

我的代碼:

# read the csv file to numpy array 
df = tf.contrib.learn.datasets.base.load_csv_with_header(
     filename="data.csv", 
     target_dtype=np.int, 
     features_dtype=np.float64) 

X = df.data 
Y = df.target 
dimension = len(X) 

feature_columns = [tf.contrib.layers.real_valued_column("", dimension=dimension)] 

classifier = tf.contrib.learn.DNNClassifier(feature_columns=feature_columns, 
                 hidden_units=[10,10], 
                 n_classes=2, 
                 activation_fn=tf.nn.sigmoid, 
                 optimizer=tf.train.ProximalAdagradOptimizer(
                 learning_rate=0.1, 
                 l2_regularization_strength=0.001)) 

#Fit model 
classifier.fit(x=X, y=Y, steps=2000) 

回答

3

經過一番研究,我想我已經想出了答案:

classifier.get_variable_value(classifier.get_variable_names()[3]) 

classifier.get_variable_names()打印的名稱列表

['dnn/binary_logistic_head/dnn/learning_rate', 
'dnn/hiddenlayer_0/biases', 
'dnn/hiddenlayer_0/biases//hiddenlayer_0/biases/part_0/Adagrad', 
'dnn/hiddenlayer_0/weights', 
'dnn/hiddenlayer_0/weights/hiddenlayer_0/weights/part_0/Adagrad', 
'dnn/logits/biases', 
'dnn/logits/biases/dnn/dnn/logits/biases/part_0/Adagrad', 
'dnn/logits/weights', 
'dnn/logits/weights/nn/dnn/logits/weights/part_0/Adagrad', 
'global_step'] 

而classifier.get_variable_names()[3]獲得第四個權重,即第一個圖層的權重。這種情況下的分類器有一個隱藏層,有10個神經元。

第7個'dnn/logits /權重'給出了輸出圖層的權重。