Mac OSX, Python 3.6.1, tensorflow 1.2.1 환경에서 MNIST dataset 다운로드 시 [SSL: CERTIFICATE_VERIFY_FAILED] 에러 발생 시 대처방법
Deep Learning (TF, Keras, PyTorch) 2017. 7. 24. 00:23머신러닝, 딥러닝 연습할 때 책이나 블로그에서 가장 많이 사용되는 예제 데이터를 들라고 하면 아마도 손으로 쓴 숫자 '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 |
많은 도움 되었기를 바랍니다.
이번 포스팅이 도움이 되었다면 아래의 '공감~'를 꾸욱 눌러주세요.