머신러닝, 딥러닝 연습할 때 책이나 블로그에서 가장 많이 사용되는 예제 데이터를 들라고 하면 아마도 손으로 쓴 숫자 '0~9' 이미지를 모아놓은 MNIST dataset 인것 같습니다.  훈련용으로 6만개, 테스트용으로 1만개 손 글씨 숫자 이미지 데이터가 들어있으니 연습하기에 제격입니다.  사이즈도 표준화 되어 있고, 가운데로 정렬도 잘 되어 있어서 훈련을 시키면 매우 높은 정확도로 훈련이 아주 잘 되지요. (실전 데이터도 과연? ㅎㅎ)


28x28 행렬에 숫자가 들어가 있구요, 이를 이미지로 그리면 손으로 쓴 숫자 글자가 됩니다.  아래 이미지는 이런 '0~9'까지의 손글씨 숫자들을 모아놓은 것입니다.  필체가 조금씩 다른데, 단번에 알아보기 쉬운 것도 있구요, 사람이 보기에도 헷갈리는 것들도 섞여 있습니다. 


[ 손으로 쓴 '0~9' 숫자들의 이미지 데이터 셋 MNIST ]




이번 포스팅에서는 tensorflow 설치 후 MNIST dataset을 사용하여 DNN 이나 CNN 연습해보려고 했더니 'SSL: CERTIFICATE_VERIFY_FAILED' 에러가 날 경우 조치 방법을 소개하겠습니다. 


제가 사용하는 환경은 아래와 같았는데요, 처음 MNIST dataset 다운로드 하려니 'SSL: CERTIFICATE_VERIFY_FAILED' 에러가 나더군요.  


 구분

버전/내용

[참고] terminal shell script 

 OS

 mac OS X 10.12.5

 

 Python

 3.6.1

# python 버전 확인

$ python3 --version

Python 3.6.1

 tensorflow

 1.2.1

# tensorflow 버전 확인

$ python3 -c 'import tensorflow as tf; print(tf.__version__)'

1.2.1

 CPU or GPU

 CPU

 

 설치/사용 환경

virtual env.

(가상환경)

# virtualenv (가상환경활성화 : activate

$ source /Users/Desktop/tensorflow/bin/activate


# 가상환경(virtual env.)에서 Jupyter Notebook 열기

$ jupyter notebook


구글링 해보니 아마도 Python 3.5 버전 이하로 설치를 했어야 했는데 3.6.1 최신 버전으로 설치하다 보니 에러가 난 것 같습니다.  Python 2.7 버전이나 Python 3.5 버전으로 재설치해보라는 답변이 있는 것으로 봐서는요. 



가상환경에서 Jupyter Notebook 띄우고, tensorflow importing 한 다음에, 아래 처럼 MNIST dataset 불러오는 script를 실행했더니 'SSL: CERTIFICATE_VERIFY_FAILED' 에러가 났습니다. 



# importing tensorflow

import tensorflow as tf

 

# mnist dataset loading

from tensorflow.examples.tutorials.mnist import input_data

mnist = input_data.read_data_sets("./mnist/data/", one_hot=True)



urllib.error.URLError: 
<urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:749)>


Python 3.6.1을 그대로 사용하는 상태에서 MNIST dataset 다운로드 시 'SSL: CERTIFICATE_VERIFY_FAILED' 에러를 해결하려면 터미널에서 아래 bash script 를 실행시켜주면 됩니다. 



# solution for 'SSL: CERTIFICATE_VERIFY_FAILED' error (=> type in below bash script at terminal)

$ /Applications/Python\ 3.6/Install\ Certificates.command 

 


-- pip install --upgrade certifi

Requirement already up-to-date: certifi in /Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages

 -- removing any existing file or link

 -- creating symlink to certifi certificate bundle

 -- setting permissions

 -- update complete





위 bash script로 certificate update 해주고 나니 tensorflow 에서 MNIST dataset 다운로드 제대로 되네요. 


== terminal 에서 가상환경 활성화 후 Jupyter Notebook 열고...


# virtualenv (가상환경활성화 : activate

$ source /Users/Desktop/tensorflow/bin/activate


# 가상환경(virtual env.)에서 Jupyter Notebook 열기

$ jupyter notebook 



* (주의사항) 가상환경(virtual env.) 에 python, tensorflow 설치한 분의 경우, Anaconda 에서 Jupyter notebook 을 열면 가상환경에 깔린 python 3.6.1, tensorflow를 Jupyter notebook이 인식 못해요. 가상환경에서 사용할 수 있도록 python 이랑 jupyter notebook 설치하고, 가상환경 활성화 한 후에 jupyter notebook 실행해서 tensorflow 사용하셔야 합니다. (Anaconda 사용하려면 conda 로 별도로 tensorflow setting 필요해요.)

(이걸 몰라서 왜 안되나 하고 한참을 애먹었네요. ㅜ_ㅜ)



== Jupyter Notebook 에서 tensorflow importing 하고 MNIST dataset 읽어오기


# importing tensorflow

import tensorflow as tf

 

# mnist dataset loading

from tensorflow.examples.tutorials.mnist import input_data

mnist = input_data.read_data_sets("./mnist/data/", one_hot=True) 


Extracting ./mnist/data/train-images-idx3-ubyte.gz

Extracting ./mnist/data/train-labels-idx1-ubyte.gz
Extracting ./mnist/data/t10k-images-idx3-ubyte.gz
Extracting ./mnist/data/t10k-labels-idx1-ubyte.gz



많은 도움 되었기를 바랍니다. 


이번 포스팅이 도움이 되었다면 아래의 '공감~'를 꾸욱 눌러주세요. 



Posted by R Friend R_Friend

댓글을 달아 주세요