2016-10-08 4 views
2

상황예 요청 : 파이썬에서 자율 깊은 학습

내가 신경망에 비교적 새로운 해요 및 표현을 학습 후 수준의 예측을 할 수있는 클러스터링 방법에 대해 배우고 싶습니다.

autoencoders/RBMS/깊은 믿음 네트워크를위한 온라인

일부 자습서는 일반적으로 는 적합 (X, Y) 또는 파이프 라인 (RBM, 물류)로에 맞게() 호출을 감독합니다. 참조 : http://www.pyimagesearch.com/2014/09/22/getting-started-deep-learning-python/

http://scikit-learn.org/stable/auto_examples/neural_networks/plot_rbm_logistic_classification.html

내가 K-수단과 같은 알고리즘이 매우 충분하지 않도록, 레이블이없는 데이터에 숨겨진 레이어의 효과를 탐구하고 싶습니다.

요청 X와 Y가 레이블이없는 데이터 세트가

(X)를 맞고 (Y)를 예측하기 비슷한 전화를 가지고 파이썬 예를 볼 좋을 것이다. 아이디어는 fit()가 fit()에서 배운 표현에 의해 결정된 '가장 가까운'클래스를 찾아서 작동한다는 것입니다.

확실히 완전한 구현은 기대하지 않지만 관련 리소스는 높이 평가할 것입니다.

예를 들어, http://deeplearning.net/tutorial/DBN.html에서 DBN을 구축 할 수 있습니다. 상응하는 predict() 메소드가 있습니까?

부칙

다소 관련 질문 :

당신이 일반적으로 먼저 모델의 아키텍처와 다음 기차 (에 맞게)을 정의해야 파이썬 깊은 학습 패키지에서

Getting the learned representation of the data from the unsupervised learning in pylearn2

+0

레이블이없는 경우 어떻게해야합니까? – Framester

답변

2

.

내가 생각할 수있는 자동 인코더의 간단한 응용 프로그램은 keras

에 당신 숨겨진 (압축) 표현의 크기를 정의하는 첫 번째 필요.

hidden_dim = 32 

그런 다음 모델의 구조

input = Input(shape=(xxx,)) 
encode = Dense(hidden_dim, activation='relu')(input) 
decode = Dense(xxx, activation='sigmoid')(encode) 

autoencoder = Model(input, decode) 

트리플 엑스는 위의 입력의 치수를 정의 필요한 수입

from keras.layers import Input, Dense 
from keras.models import Model 

을 확인합니다. 예를 들어 자동 엔코더를 MNIST 데이터 세트 (28x28 이미지가 있음)에서 학습 시키려면 xxx는 28x28 = 784가됩니다.

이제 비용 함수와 모델 및이 자율 모델을 학습하려면 지금

autoencoder.compile(optimizer='adadelta', loss='binary_crossentropy') 

선택의 최적화를 컴파일, 당신은 입력과 출력으로 동일한 이미지를 배치해야합니다.일부 접근법은 출력에 잡음을 추가하지만, 나는 그것을 여러분에게 맡길 것이다. X가 훈련 데이터이고 X_val이 유효성 검증 데이터라고 가정합니다. 필요에 따라 하이퍼 파라미터를 조정하십시오.

그런 다음 X_test라는 테스트 세트가 있다고 가정하면 모델에 시도하여 재현을 요청할 수 있습니다.

  • 네트워크 아키텍처를 정의 (층, 활성화, 모양 등 :;

    y_hat = autoencoder.predict(X_test) 
    

    TL DR
    하지만 기본적인 단계는 sklearn보다 할 수있는 좀 더 어렵다)

  • 모델 컴파일 (비용 함수 및 최적화 도구 정의)
  • 데이터에 모델을 맞추십시오 (교육 매개 변수도 정의하십시오)
  • 지정된 테스트 입력을 예측합니다.

별도로

encoder = Model(input, encode) 
encoded_input = Input(shape=(hidden_dim,)) 
decoder_layer = autoencoder.layers[-1] 
decoder = Model(encoded_input, decoder_layer(encoded_input)) 

지금은 단지 테스트 입력을 통과 (현실을 부르 자 인코더와 디코더를 정의 할 필요가 이제 두 번째 질문에 대답하기 위해 내부 표현

얻기 원래)를 인코더 및 디코더를 통해 다운로드하십시오.

hidden_representation = encoder.predict(original) 
recreation = decoder.predict(hidden_representation) 

숨겨진 표현이나 인코더 계층을 사용하여 다른 알고리즘 (예 : 감독 된 알고리즘)의 입력을 생성 할 수도 있습니다.