首页 > 解决方案 > 在 kaggle 上导入预训练的 vgg 模型时出现 Gaierror

问题描述

initial_model = VGG19(weights='imagenet', pooling = max)

我正在尝试在 kaggle 上的 keras 中导入预训练的 VGG 模型。我遇到了一个不熟悉的gaierror。

从https://github.com/fchollet/deep-learning-models/releases/download/v0.1/vgg19_weights_tf_dim_ordering_tf_kernels_notop.h5下载数据

-------------------------------------------------- ------------------------- gaierror Traceback(最近一次调用最后)/opt/conda/lib/python3.6/urllib/request.py in do_open(self, http_class, req, **http_conn_args) 1317
h.request(req.get_method(), req.selector, req.data, headers, -> 1318 encode_chunked=req.has_header('Transfer-encoding')) 1319
除了 OSError as err: # 超时错误

/opt/conda/lib/python3.6/http/client.py in request(self, method, url, body, headers, encode_chunked) 1238 """向服务器发送完整的请求。""" -> 1239 self ._send_request(方法、url、正文、标头、encode_chunked)1240

/opt/conda/lib/python3.6/http/client.py in _send_request(self, method, url, body, headers, encode_chunked) 1284 body = _encode(body, 'body') -> 1285 self.endheaders(body ,encode_chunked=encode_chunked)1286

/opt/conda/lib/python3.6/http/client.py in endheaders(self,message_body,encode_chunked)1233 raise CannotSendHeader()-> 1234 self._send_output(message_body,encode_chunked=encode_chunked)1235

/opt/conda/lib/python3.6/http/client.py in _send_output(self, message_body, encode_chunked) 1025 del self._buffer[:] -> 1026 self.send(msg) 1027

/opt/conda/lib/python3.6/http/client.py in send(self, data) 963 if self.auto_open: --> 964 self.connect() 965 else:

/opt/conda/lib/python3.6/http/client.py 在 connect(self) 1391 -> 1392 super().connect() 1393

/opt/conda/lib/python3.6/http/client.py in connect(self) 935 self.sock = self._create_connection( --> 936 (self.host,self.port), self.timeout, self.源地址)937 self.sock.setsockopt(socket.IPPROTO_TCP,socket.TCP_NODELAY,1)

/opt/conda/lib/python3.6/socket.py in create_connection(address, timeout, source_address) 703 err = None --> 704 for res in getaddrinfo(host, port, 0, SOCK_STREAM): 705 af, socktype,原型,规范名称,sa = res

/opt/conda/lib/python3.6/socket.py in getaddrinfo(host, port, family, type, proto, flags) 744 addrlist = [] --> 745 for res in _socket.getaddrinfo(host, port, family , type, proto, flags): 746 af, socktype, proto, canonname, sa = res

gaierror: [Errno -3] 名称解析暂时失败

在处理上述异常的过程中,又出现了一个异常:

URLError Traceback(最近一次调用最后一次)/opt/conda/lib/python3.6/site-packages/keras/utils/data_utils.py in get_file(fname,origin,untar,md5_hash,file_hash,cache_subdir,hash_algorithm,extract,archive_format , cache_dir) 221 try: --> 222 urlretrieve(origin, fpath, dl_progress) 223 除了 HTTPError as e:

/opt/conda/lib/python3.6/urllib/request.py in urlretrieve(url, filename, reporthook, data) 247 --> 248 with contextlib.closing(urlopen(url, data)) as fp: 249 headers = fp.info()

/opt/conda/lib/python3.6/urllib/request.py in urlopen(url, data, timeout, cafile, capath, cadefault, context) 222 opener = _opener --> 223 return opener.open(url, data,超时)224

/opt/conda/lib/python3.6/urllib/request.py in open(self, fullurl, data, timeout) 525 --> 526 response = self._open(req, data) 527

/opt/conda/lib/python3.6/urllib/request.py in _open(self, req, data) 543 result = self._call_chain(self.handle_open, protocol, protocol + --> 544 '_open', req) 545 如果结果:

/opt/conda/lib/python3.6/urllib/request.py in _call_chain(self, chain, kind, meth_name, *args) 503 func = getattr(handler, meth_name) --> 504 result = func(*args)如果结果不是无,则为 505:

/opt/conda/lib/python3.6/urllib/request.py in https_open(self, req)
1360 return self.do_open(http.client.HTTPSConnection, req, -> 1361 context=self._context, check_hostname=self.第1362章

/opt/conda/lib/python3.6/urllib/request.py in do_open(self, http_class, req, **http_conn_args) 1319 除了 OSError as err: # timeout error -> 1320 raise URLError(err) 1321 r = h .getresponse()

网址错误:

在处理上述异常的过程中,又出现了一个异常:

() 中的异常回溯(最近一次调用最后一次)----> 1 initial_model = VGG19(include_top=False, input_shape=(128,128,3), weights='imagenet')

/opt/conda/lib/python3.6/site-packages/keras/applications/init .py in wrapper(*args, **kwargs) 26 kwargs['models'] = models 27 kwargs['utils'] = utils ---> 28 return base_fun(*args, **kwargs) 29 30 return wrapper

/opt/conda/lib/python3.6/site-packages/keras/applications/vgg19.py 在 VGG19(*args, **kwargs) 9 @keras_modules_injection 10 def VGG19(*args, **kwargs): --- > 11 返回 vgg19.VGG19(*args, **kwargs) 12 13

VGG19 中的 /opt/conda/lib/python3.6/site-packages/keras_applications/vgg19.py(include_top,weights,input_tensor,input_shape,pooling,classes,**kwargs)219 WEIGHTS_PATH_NO_TOP,220 cache_subdir='models',- -> 221 file_hash='253f8cb515780f3b799900260a226db6') 222 model.load_weights(weights_path) 223 if backend.backend() == 'theano':

/opt/conda/lib/python3.6/site-packages/keras/utils/data_utils.py 在 get_file(fname,origin,untar,md5_hash,file_hash,cache_subdir,hash_algorithm,extract,archive_format,cache_dir)224 引发异常(error_msg .format(origin, e.code, e.msg)) 225 除了 URLError as e: --> 226 raise Exception(error_msg.format(origin, e.errno, e.reason)) 227 除了 (Exception, KeyboardInterrupt): 228 如果 os.path.exists(fpath):

例外: https ://github.com/fchollet/deep-learning-models/releases/download/v0.1/vgg19_weights_tf_dim_ordering_tf_kernels_notop.h5上的 URL 获取失败 :无 - [Errno -3] 名称解析临时失败

标签: pythonkeraskaggle

解决方案


看起来您可能没有在内核中启用 Internet 访问。您可以在右侧的面板中执行此操作。添加互联网连接后,您将能够下载文件。

我们实际上也已经将 VGG-19 权重上传到了 Kaggle。如果你愿意,你可以将这个现有的数据集添加到你的内核而不是下载它,这对你来说可能会快一点。

希望有帮助!:)


推荐阅读