#python-3.x #tensorflow2.0
Вопрос:
Я начинаю с машинного зрения и попытался загрузить CIFAR-10 напрямую с помощью кода python, но меня все время останавливает ошибка сертификата.
Не будучи экспертом по python, я не уверен, как с этим работать :
Я извлекаю код python :
import numpy as np
import matplotlib.pyplot as plt
from tensorflow.keras.layers import Input, Conv2D, Dense, Flatten, Dropout
from tensorflow.keras.layers import GlobalMaxPooling2D, MaxPooling2D
from tensorflow.keras.layers import BatchNormalization
from tensorflow.keras.models import Model
cifar10 = tf.keras.datasets.cifar10
а затем, если произойдет сбой с этой ошибкой :
Downloading data from https://www.cs.toronto.edu/~kriz/cifar-10-python.tar.gz
Traceback (most recent call last):
File "C:Userstest1AppDataLocalProgramsPythonPython37liburllibrequest.py", line 1317, in do_open
encode_chunked=req.has_header('Transfer-encoding'))
File "C:Userstest1AppDataLocalProgramsPythonPython37libhttpclient.py", line 1252, in request
self._send_request(method, url, body, headers, encode_chunked)
File "C:Userstest1AppDataLocalProgramsPythonPython37libhttpclient.py", line 1298, in _send_request
self.endheaders(body, encode_chunked=encode_chunked)
File "C:Userstest1AppDataLocalProgramsPythonPython37libhttpclient.py", line 1247, in endheaders
self._send_output(message_body, encode_chunked=encode_chunked)
File "C:Userstest1AppDataLocalProgramsPythonPython37libhttpclient.py", line 1026, in _send_output
self.send(msg)
File "C:Userstest1AppDataLocalProgramsPythonPython37libhttpclient.py", line 966, in send
self.connect()
File "C:Userstest1AppDataLocalProgramsPythonPython37libhttpclient.py", line 1422, in connect
server_hostname=server_hostname)
File "C:Userstest1AppDataLocalProgramsPythonPython37libssl.py", line 423, in wrap_socket
session=session
File "C:Userstest1AppDataLocalProgramsPythonPython37libssl.py", line 870, in _create
self.do_handshake()
File "C:Userstest1AppDataLocalProgramsPythonPython37libssl.py", line 1139, in do_handshake
self._sslobj.do_handshake()
ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: certificate has expired (_ssl.c:1076)
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:Userstest1AppDataLocalProgramsPythonPython37libsite-packageskerasutilsdata_utils.py", line 274, in get_file
urlretrieve(origin, fpath, dl_progress)
File "C:Userstest1AppDataLocalProgramsPythonPython37libsite-packageskerasutilsdata_utils.py", line 82, in urlretrieve
response = urlopen(url, data)
File "C:Userstest1AppDataLocalProgramsPythonPython37liburllibrequest.py", line 222, in urlopen
return opener.open(url, data, timeout)
File "C:Userstest1AppDataLocalProgramsPythonPython37liburllibrequest.py", line 525, in open
response = self._open(req, data)
File "C:Userstest1AppDataLocalProgramsPythonPython37liburllibrequest.py", line 543, in _open
'_open', req)
File "C:Userstest1AppDataLocalProgramsPythonPython37liburllibrequest.py", line 503, in _call_chain
result = func(*args)
File "C:Userstest1AppDataLocalProgramsPythonPython37liburllibrequest.py", line 1360, in https_open
context=self._context, check_hostname=self._check_hostname)
File "C:Userstest1AppDataLocalProgramsPythonPython37liburllibrequest.py", line 1319, in do_open
raise URLError(err)
urllib.error.URLError: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: certificate has expired (_ssl.c:1076)>
Я не уверен, как либо загрузить набор данных вручную и загрузить python с диска, либо заставить его игнорировать ошибку.
Любая помощь будет признательна. Заранее спасибо.
Комментарии:
1. Загружайте по протоколу http вместо https
2. Как мне заставить python сделать это, пожалуйста?
Ответ №1:
Ошибка возникает из-за того, что у вас не установлены правильные сертификаты, а https-запрос не удается подключиться к базе данных cifar-10.
Вы можете обойти python и вручную загрузить его с: cifar-10-python.tar.gz. Затем вам просто нужно будет указать python туда, где вы скачали файл.
Или, если вы находитесь на компьютере Mac, вы можете попробовать установить необходимые сертификаты, запустив этот файл: /Applications/Python 3.6/Install Certificates.command
а затем снова запустив свой скрипт
Кроме того, отредактируйте свою локальную копию этого файла cifar-10.py и повтори свой сценарий.
# line 78
origin = 'https://www.cs.toronto.edu/~kriz/cifar-10-python.tar.gz'
# and change it to be:
origin = 'http://www.cs.toronto.edu/~kriz/cifar-10-python.tar.gz'
Этот файл может существовать в нескольких местах, в зависимости от того, как вы установили tensorflow.
Комментарии:
1. Хорошо, я новичок в python, поэтому все, что мне нужно знать, это как указать на копию файла cifar10.tgz и импортировать его в keras, пожалуйста? например c:tempcifar10.tgz Другой код, который я видел, — это tf.keras.datasets.cifar10.load_data (), но я не уверен, как связать часть load_data() и файл .tgz на диске. Спасибо.
2. Я буквально включил точный код, который используется для этого: github.com/keras-team/keras/blob/master/keras/datasets/. … Просто установите
path = Path('c:tempcifar10.tgz')
, и это сработает.