달력

06

« 2018/06 »

  •  
  •  
  •  
  •  
  •  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30

케라스 Keras 모델 저장, 재사용 


원본 : https://tykimos.github.io/2017/06/10/Model_Save_Load/ 에 있는 강좌를 정리했습니다.

위 링크는 김태영님의 케라스 강의 사이트입니다.


딥러닝 Deep Learning 케라스 Keras 에서 아래와 같은 방법으로 모델을 재사용할 수 있습니다.


load_model 로 위 스크린샷처럼 모델을 저장하도록 지정하고, 처음 실행하면

처음부터 loss 로스 1.15 에서 시작. 최종 acc 정확도는 0.906 (90.6%)

90.6% 로 학습된 결과가 mnist_mlp_model.h5 라는 파일로 저장됩니다.


모델 구조 확인하기. 뭐 이건 그냥 참고용으로 보여주기에요.


load_model 로 아까 저장했던 mnist_mlp_model.h5 모델파일을 불러와서 학습하고 평가후 저장합니다.

이렇게 실행하면 처음부터 loss 로스 0.32 에서 시작. 최종 acc 정확도는 0.92 (92%) 가 됩니다.


위 스크린샷에서 In [3] 이 셀만 계속 실행해보면 정확도가 계속 올라가는걸 볼 수 있습니다.

모델을 재사용한다는 이야기입니다. 이제 저 모델 파일만 있다면 colab (https://colab.research.google.com/) 등 어디에서나 학습된 모델을 다시 사용할 수 있습니다.


이렇게 만들어진 모델을 다른곳에서 재사용 하려면 소스가 있는 곳과 동일한 폴더에 복사해둔 다음,

아래와 같이 불러와서 사용하면 됩니다.


소스는 아래 첨부파일을 참조하여 주세요 ~


모델 저장 소스코드 : 주피터 노트북 Jupyter Notebook

Model.Save.ipynb


모델 재사용 소스코드 : 주피터 노트북 Jupyter Notebook

Model.ReUse.ipynb


Posted by 멋지다마라송

[정리] 모두를 위한 딥러닝 10 - ReLU & 초기값 정하기   by 김성훈 


강의 웹사이트 : http://hunkim.github.io/ml/

Lec = 강의 / Lab = 실습


시그모이드 결과값은 0<f(x)<1 이기 때문에 이를 체인룰에 따라 계속 곱하다보면 (레이어가 많으면) 

0.01 * 0.03 * 0.2 와 같은 형태가 되기 때문에 결국 한없이 0 에 가까워지게 됩니다. 

즉, 입력값 X 가 결과값 f(x), Y 에 미치는 영향이 거의 없게 됩니다.  

따라서, 학습을 깊게 여러번 하면 할수록 에러가 커지는 현상이 일어납니다. 이건 오버피팅 Over Fitting 과 다릅니다.


이를 극복하기 위한 함수가 렐루 ReLU 입니다.

렐루는 0 이하는 0 으로, 그 이상값은 자기 자신의 값을 갖는 함수입니다.


이 두가지 함수를 비교하기 위해 텐서보드 tensorboard 를 이용해보겠습니다.

텐서보드로 분석할 수 있도록 로그를 남긴 다음, 텐서보드를 띄워서 웹브라우저로 확인하면 됩니다.

생각보다 메모리나 CPU 를 많이 사용하는, 좀 무거운 라이브러리입니다.


1번 방법 = 시그모이드를 사용하여 레이어 10개 사용하기.


2번 방법 = 렐루를 사용하여 레이어 10개 사용하기.




초기값 잘 설정하는게 중요합니다.


RBM : Restricted Boatman (Boltzman) Machine

자비어 : xavier

MSRA



Posted by 멋지다마라송


티스토리 툴바