我正在尝试将kaggle imagenet对象本地化挑战数据下载到google colab中,以便可以使用它来训练我的模型。 Kaggle使用API轻松快速地访问其数据集。 (https://github.com/Kaggle/kaggle-api)但是,在Google colab中调用命令“ kaggle竞赛下载-c imagenet-object-localization-challenge”时,找不到包含我的用户名和api-key的kaggle.json文件。
运行jupyter笔记本时,我的Mac上没有出现此问题,但是由于我想将google的gpu用于我的模型,因此我开始使用google colab。由于kaggle API希望用户名和api-key位于.kaggle目录中的kaggle.json文件中,因此我首先创建了目录.kaggle,然后创建了文件kaggle.json,我在其中写入了用户名和api-键(以下示例未显示我的用户名和api键)。然后,我尝试配置我的json文件的路径,以便kaggle在调用kaggle下载命令时使用。
!pip install kaggle
!mkdir .kaggle
!touch .kaggle/kaggle.json
api_token = {"username":"username","key":"api-key"}
import json
import zipfile
import os
with open('/content/.kaggle/kaggle.json', 'w') as file:
json.dump(api_token, file)
!chmod 600 /content/.kaggle/kaggle.json
!kaggle config path -p /content
但是,在运行最后一条命令时,出现错误:
IOError: Could not find kaggle.json. Make sure it's located in /root/.kaggle. Or use the environment method.
我的目标是使用以下命令从kaggle获取数据集:
!kaggle competitions download -c imagenet-object-localization-challenge
os.chdir('/content/competitions/imagenet-object-localization-challenge')
for file in os.listdir():
zip_ref = zipfile.ZipFile(file, 'r')
zip_ref.extractall()
zip_ref.close()
我不明白为什么kaggle API无法找到我的json文件。如何在Google colab中使用API?
答案 0 :(得分:6)
答案 1 :(得分:0)
如错误所述,您需要将kaggle.json放在正确的位置。
尝试:
!mv .kaggle /root/
然后再次运行您的代码。
答案 2 :(得分:0)
根据kaggle api documentation,由于google colab环境基于Linux,因此凭据json所查找的位置为~/.kaggle/kaggle.json
。
在您的代码段中,您尝试配置path
参数,但是它不用于查找凭据json:
-路径:将下载文件的文件夹,默认为当前工作目录
因此,适用于google colab环境的完整代码段为:
!mkdir ~/.kaggle
!touch ~/.kaggle/kaggle.json
api_token = {"username":"username","key":"api-key"}
import json
with open('/root/.kaggle/kaggle.json', 'w') as file:
json.dump(api_token, file)
!chmod 600 ~/.kaggle/kaggle.json
然后进行一些api调用
!kaggle datasets download -d datamunge/sign-language-mnist
答案 3 :(得分:0)
如果您是Windows用户,请将kaggle.json移到.kaggle文件夹中,这样便可以在系统根目录(位于用户名文件夹中)中找到它。