0

fit 데이터 후 sklearn의 MLPClassifier을 사용하여 신경망 최종 숨겨진 활성화 레이어 출력에 대한 테스트를하고 싶습니다. 내가 라벨 y_train과 크기 (300,100)Sklearn의 MLPClassifier에서 최종 숨겨진 활성화 레이어 출력 가져 오기

clf = MLPClassifier(hidden_layer_sizes=(300,100)) 
clf.fit(X_train,y_train) 

두 숨겨진 레이어 X_train 데이터를 가정하는 분류를 만드는 경우 예를 들어

, 나는 마지막 숨겨진 활성화를 검색하기 위해 어떻게 든 함수를 호출 할 수 있도록하고 싶습니다 추가 테스트에 사용하기 위해 길이가 100 인 레이어 벡터.

preds = clf.predict(X_test) 

, 나는 같은 것을 할 싶습니다 : 테스트가 X_test, y_test를 설정 가정

, 정상 예측 것 같은 get_weights이 존재

activation_layers_for_all_X_test = clf.get_final_activation_output(X_test) 

기능을하지만에만 도움이 될 것이다 나를 레이어 단위로. 변환 자체를하지 않는 것, 최종 숨겨진 레이어에 대한 이러한 최종 숨겨진 레이어 활성화 된 출력을 검색하는 또 다른 방법이 있습니까? 예로서,이 도면을 보면

: 싶습니다

출력은 Out Layer 최종 은닉층에서, 즉 마지막 작동 출력된다.

+0

'predict_proba'를 찾으십니까? 그것이 내가 이해할 때 최종 레이어 활성화입니다. – ncfirth

+0

@ncfirth'predict_proba'는 실제 숨겨진 활성화 레이어 출력이 아닌'softmax'의 출력입니다. 최종 숨겨진 레이어 출력은 'softmax'최종 레이어 출력에 제공됩니다. 기본적으로 나는 그 시점 이전에 숨겨진 레이어 출력을 원합니다. 나는 내가 이것을 잘 설명하지 않았을지도 모른다는 것을 깨달았다. 나는 그 문제를 해결하려고 노력할 것이다. –

+0

아 좋아, sklearn에 기능이없는 것처럼 보입니다. 그냥 내 대답을 참조하십시오 – ncfirth

답변

2

위의 내 의견에 말했듯이 sklearn에서 원하는 것을 정확하게 수행하는 것처럼 보이지 않지만 원하는대로 할 수 있도록 _predict 함수를 쉽게 해킹 할 수 있습니다. 다음 코드는 모든 활성화를 반환합니다. 나중에 편집 할 수있는 비트에 대해 return activations[-2]으로 편집 할 수 있습니다.

def get_activations(clf, X): 
     hidden_layer_sizes = clf.hidden_layer_sizes 
     if not hasattr(hidden_layer_sizes, "__iter__"): 
      hidden_layer_sizes = [hidden_layer_sizes] 
     hidden_layer_sizes = list(hidden_layer_sizes) 
     layer_units = [X.shape[1]] + hidden_layer_sizes + \ 
      [clf.n_outputs_] 
     activations = [X] 
     for i in range(clf.n_layers_ - 1): 
      activations.append(np.empty((X.shape[0], 
             layer_units[i + 1]))) 
     clf._forward_pass(activations) 
     return activations 
+0

이것은 무작위로 크기를 기반으로하는'size = (X.shape [0], layer_units [i + 1])'의 임의의 np.array'np.empty ' 활성화 층의 값의 합계와 합계 입력의 활성화는 어디에 있습니까? 이것은 내 데이터를 테스트 한 후 뉴런처럼 행동하지 않는 것 같습니다. 내가 뭔가를 오해하고 있니? –

+0

이런 쓰레기. 가장 중요한 라인을 삭제했습니다. 답변 업데이트 중! – ncfirth

+1

'sklearn'에서'BaseMultilayerPerceptron' 코드를 읽고 있는데이 코드는'_predict' 함수가하는 것과 거의 같습니다. 좋은 웃음을 지니고 있었다. 덕분에 많은 도움이되었다. @ncfirth –