2016-09-08 3 views
1

LinearClassifier 클래스를 사용하여 이진 분류 모델에서 텐서 흐름을 사용하고 있습니다.linear weight index에서 string_to_hash_bucket의 인덱스 찾기 Tensorflow

hat = tf.contrib.layers.sparse_column_with_hash_bucket("hat", hash_bucket_size=1000) 

나는 tf.Session (에 모델을 초기화에 맞는 일을 한 후) :

with tf.Session() as sess:  
    m = tf.contrib.learn.LinearClassifier(feature_columns=hat...) 
    m.fit(...) 

I가 분류를 내놓고있어 기능 중 하나는 열라고 모자입니다 모델을 훈련 한 후에 각 모자 범주의 가중치를 검사하고 싶습니다.

모자 태그는 다른 문자열로 지정됩니다. 모델을 훈련 한 후에 각 모자 라벨과 관련된 무게를 찾고 싶습니다. 그러나 특정 모자와 무게를 비교하기 위해 나는 모자 라벨이 던져진 해시 양동이를 알아야합니다. 모자 레이블 중 하나는 "tb"입니다. 그때 가중치 돌이 여기 반환 할 수

tf.string_to_hash_bucket(tf.cast("tb",tf.string), 1000) 

:

for i,n in enumerate(m.linear_weights_["linear/hat_weights"]): 
    print i, n 

나에게 제공합니다

linear/hat_weights 
    0 [-0.147] 
    ... 

내 문제는 내가이 기능을 사용하여 색인을 손쉽게 찾을 수 있습니다 유의미한 (abs (x)> 0.0005) 가중치를 가진 인덱스는 데이터 집합의 모든 모자 레이블에서 string_to_hash_bucket으로부터 얻는 해시 버킷 ID 중 하나와 일치하지 않습니다.

그래서 결국 내 질문 : 내가 바로 그 string_to_hash_bucket ID를 생각하는 m.linear_weights _ [ "선형/hat_weights"]로 해당 배열 반환의 인덱스에 해당한다

건가요?

올바른 ID를 얻으려면 어떻게해야합니까? 선형 모델에서 특성 열 텐서의 가중치 (선형 또는 가중치에도 포함되지 않은)와 희소성 모두를 쉽게 검사 할 수 있습니까?

많은 감사!

답변

0

블랙 박스 인 가중치를 검사하는 또 다른 방법은 단일 모자 기능이 켜져있는 예제에서 전체 모델을 평가하는 것입니다. 그러면 모델이 각 지형지 물에 지정한 가중치를 볼 수 있습니다.