3

我正在尝试在 Kaggle 内核上使用 resnet50 预训练模型。

但是,当我运行以下代码时,会发生错误,并且无法下载预训练模型。我怎样才能让它工作?

from keras.applications.resnet50 import ResNet50
from keras.preprocessing import image
from keras.applications.resnet50 import preprocess_input, decode_predictions
import numpy as np

model = ResNet50(weights='imagenet', include_top=False)

错误:

-> 1318 encode_chunked=req.has_header('Transfer-encoding')) 1319
除了 OSError as err: # timeout error ...

例外: https ://github.com/fchollet/deep-learning-models/releases/download/v0.2/resnet50_weights_tf_dim_ordering_tf_kernels_notop.h5上的 URL 获取失败 :无 - [Errno -2] 名称或服务未知

所有日志:

使用 TensorFlow 后端。/opt/conda/lib/python3.6/importlib/_bootstrap.py:219:RuntimeWarning:模块'tensorflow.python.framework.fast_tensor_util'的编译时版本3.5与运行时版本3.6不匹配返回f(*args,**kwds )

从https://github.com/fchollet/deep-learning-models/releases/download/v0.2/resnet50_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 -2] 名称或服务未知

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

URLError Traceback (最近一次调用最后) /opt/conda/lib/python3.6/site-packages/Keras-2.0.6-py3.6.egg/keras/utils/data_utils.py in get_file(fname, origin, untar , md5_hash, file_hash, cache_subdir, hash_algorithm, extract, archive_format, cache_dir) 219 try: --> 220 urlretrieve(origin, fpath, dl_progress) 221 除了 URLError 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()

网址错误:

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

() 4 import numpy as np 5 ----> 6 model = ResNet50(weights='imagenet', include_top=False) 中的异常回溯(最后一次调用)

/opt/conda/lib/python3.6/site-packages/Keras-2.0.6-py3.6.egg/keras/applications/resnet50.py in ResNet50(include_top、weights、input_tensor、input_shape、pooling、classes)261 WEIGHTS_PATH_NO_TOP, 262 cache_subdir='models', --> 263 md5_hash='a268eb855778b3df3c7506639542a6af') 264 model.load_weights(weights_path) 265 如果 K.backend() == 'theano':

/opt/conda/lib/python3.6/site-packages/Keras-2.0.6-py3.6.egg/keras/utils/data_utils.py in get_file(fname, origin, untar, md5_hash, file_hash, cache_subdir, hash_algorithm , extract, archive_format, cache_dir) 220 urlretrieve(origin, fpath, dl_progress) 221 除了 URLError as e: --> 222 raise Exception(error_msg.format(origin, e.errno, e.reason)) 223 除了 HTTPError as e: 224 引发异常(error_msg.format(origin,e.code,e.msg))

例外: https ://github.com/fchollet/deep-learning-models/releases/download/v0.2/resnet50_weights_tf_dim_ordering_tf_kernels_notop.h5上的 URL 获取失败 :无 - [Errno -2] 名称或服务未知

4

2 回答 2

12

互联网设置在 kaggle 上默认为关闭。如果你打开它,你可以下载预训练的模型。

在内核的右侧,您将看到可以在那里启用 Internet 的设置。 在此处输入图像描述

于 2019-06-23T13:19:54.240 回答
1

据我所知,Kaggle 内核在没有互联网访问的隔离容器中运行。所有训练模型都必须设置并附加为数据集。您可以尝试在公共数据集库中搜索您需要的内容。例如,可以在这里找到 Resnet50:https ://www.kaggle.com/keras/resnet50

于 2018-05-18T08:16:37.050 回答