민서네집

[First Contact with TensorFlow] Multi-Layer 신경망 예제 에러[Solved] 본문

머신러닝

[First Contact with TensorFlow] Multi-Layer 신경망 예제 에러[Solved]

브라이언7 2016. 8. 20. 22:35

5. MULTI-LAYER NEURAL NETWORKS IN TENSORFLOW

http://www.jorditorres.org/first-contact-with-tensorflow/


https://tensorflowkorea.wordpress.com/5-텐서플로우-다중-레이어-뉴럴-네트워크-first-contact-with-tensorflow/


[실행환경]

Windows 10,  Docker Toolbox 에서 실행


docker run -it --name tf -p 8888:8888 -p 6006:6006 -v /c/Users/Heeseok:/root/Heeseok gcr.io/tensorflow/tensorflow:latest-devel


[소스]


https://github.com/jorditorresBCN/LibroTensorFlow


Docker Toolbox 안에서 다음과 같이 실행

# python CNN.py 


Train 다 실행하고, Test Set의 Accuracy 를 계산할 때 Killed 라고 나오면서 Test Set의 Accuracy 가 출력되지 않습니다.


결과가 나오지 않는 이유가 뭘까요? 


TensorFlow의 버전은 0.8.0 입니다.


root@0455a864f3a9:~/Heeseok/python/LibroTensorFlow# python

Python 2.7.6 (default, Jun 22 2015, 17:58:13)

[GCC 4.8.2] on linux2

Type "help", "copyright", "credits" or "license" for more information.

>>> import tensorflow as tf

>>> print tf.__version__

0.8.0



CNN.py


input_data.py




Facebook 에서 First Contact with TensorFlow 번역을 https://tensorflowkorea.wordpress.com 블로그에 올려놓으신 박해선(Park Ricky) 님에게 문의하였더니 메모리 문제일 것이라고 답변을 주셔서 VirtualBox에서 메모리를 5GB로 늘려서 테스트 했더니 에러 안나고 성공하였습니다.




cf) https://www.facebook.com/permalink.php?story_fbid=167403393689992&id=100012609973068


OS: Windows 10

Docker Toolbox: TensorFlow(CPU 모드) 0.8.0

Ubuntu Bash Shell(Windows 10에 내장된 Linux용 Windows 하위 시스템): TensorFlow(CPU 모드) 0.10.0rc0


여러 환경에서 테스트 해 봤는데, 공통적으로 Train Set 학습은 잘 되고, Test Set 계산할 때 에러가 납니다.


Docker Toolbox (메모리 1024MB) Free Memory: 725MB

- Killed 라고 출력.


Docker Toolbox (메모리 2048MB) 

- W tensorflow/core/framework/op_kernel.cc:900] Resource exhausted: OOM when allocating tensor with shape[10000,28,28,32]


Docker Toolbox (메모리 5120MB) Free Memory: 4.49 GB

- Test Set 계산할 때 4.06 GB 메모리 사용하고 test accuracy 0.9137 출력


Windows 10 Ubuntu Bash Shell 에서는 시스템에 통합되어 있어서 따로 메모리 설정을 할 수는 없습니다.

- Free Memory 가 3.3 GB 일 때는 아래와 같이 에러납니다.


terminate called after throwing an instance of 'std::bad_alloc'

  what():  std::bad_alloc

중지됨 (core dumped)


- 재부팅하고 나서 Free 메모리가 6.11GB 상태에서 실행하였더니 5.63GB의 메모리를 사용하면서 정상적으로 실행되었습니다.


TensorFlow에 포함되어 있는 MNIST 예제(convolutional.py)는 테스트 할 때도 Mini Batch를 64개씩 돌리는데, Jordi Torres 교수님의 MULTI-LAYER NEURAL NETWORKS 예제는 Training할 때만 Mini Batch를 50개씩 돌리고, Test 할 때는 10000개를 한꺼번에 계산해서 메모리 에러가 나는군요!!


그래서 TensorFlow에 포함되어 있는 MNIST 예제(convolutional.py)는 Docker Toolbox(메모리 1024MB)에서도 잘 실행되었습니다.


top 명령으로 메모리를 체크했구요. Docker Toolbox (메모리 5120MB)으로 테스트한 동영상을 아래 첨부합니다.



Docker Quickstart Terminal을 2개 띄워서 

위에서는 

$ docker start -ia tf

라고 실행한 후 # python CNN.py 실행


밑에 창에서는

$ docker exec -it tf bash

라고 실행한 후 top 명령 실행.


Comments