因为自己的电脑GPU是1050Ti,4G显存,有些任务实在跑不起来,学生党也租不起服务器,只能去Kaggle上蹭一下,奈何,网上关于Kaggle的实际操作使用流程太少,即使有也不够细致,只有自己在黑夜中慢慢摸索,特此写下一些自己的摸索过程!
kaggle kernels提供两种规格的docker供食用。
1、CPU型:4 cores 16g内存
2、GPU型:2 cores 14g内存 tesla-p100 16G
登录kaggle之后,顶部导航条第三个就是Kernels
首先打开Kaggle的网站之后,你会看到有New Notebooks
,这里就是新建一个kernel,这个新建kernel就类似自己在本地IDE上创建一个项目。
Kaggle新建kernel有两种方式,这个主要是编辑的环境:
编程语言目前只支持python和R两种
什么叫从零开始创建呢,此时只是创建一个kernel,当前kernel是没有数据的,如果需要数据需要自己上传
创建好Notebook
kernel如下:
上图可以看到有:
1、Internet off
2、GPU off
Internet
是否需要联网,如果需要下载东西需要打开
GPU
是否需要使用GPU,如果需要使用GPU要打开
注意:
这两个设置默认都是关闭的,如果需要使用则需要打开,打开之后kernel会重新加载
import os
print(os.getcwd()) # 当前文件所在的路径
print(os.listdir(os.getcwd())) # 在/kaggle/working文件夹下有两个隐藏文件['.ipynb_checkpoints', '__notebook_source__.ipynb']
print(os.listdir("../../"))
print(os.listdir("../"))
print(os.listdir("../input")) # 里面是没有数据的
print(os.listdir("../../kaggle"))
# 结果
"""
/kaggle/working
['.ipynb_checkpoints', '__notebook_source__.ipynb']
['bin', 'var', 'mnt', 'etc', 'root', 'home', 'tmp', 'lib', 'sbin', 'proc', 'lib64', 'srv', 'boot', 'opt', 'sys', 'media', 'usr', 'run', 'dev', 'kaggle', '.dockerenv', '.jupyter', 'src', '=2.18', '=3.0.7', '=0.2.4', '=1.3.6', '=0.8.0', '=1.0.2', '=1.1', '=0.6.0', '.theanorc']
['lib', 'input', 'config', 'working']
[]
['lib', 'input', 'config', 'working']
"""
!ls -al
# 结果
"""
total 16
drwxr-xr-x 3 root root 4096 Nov 28 06:34 .
drwxr-xr-x 6 root root 4096 Nov 28 06:34 ..
drwxr-xr-x 2 root root 4096 Nov 28 06:34 .ipynb_checkpoints
-rw-r--r-- 1 root root 199 Nov 28 06:34 __notebook_source__.ipynb
"""
主要文件目录如下:
- input:一般用于存放训练数据的文件夹
- config:存放配置文件
- lib
- working :工作路径,主要是我们创建的代码文件的工作目录
- .ipynb_checkpoints
- notebook_source.ipynb
Script
的kernel创建和Notebook
的kernel创建类似,创建好如下如:
点进去Cifar10数据集之后,就可以在这个数据集上创建一个kernel,相当是把Cifar10数据集直接放到了新创建kernel的input文件夹
我们可以看到:
在两种编辑模式下都有:
- Upload script
- Download script
- Upload notebook
- Download notebook
重点说明:
1、无论是script还是notebook的情况下,你把你当前的代码下载下来都是.ipynb文件
类型
2、无论是script还是notebook的情况下,如果你上传的是.py类型的文件
都会报错:Uploading a kernel failed. Please validate your kernel and try again at a later time.
3、在script下可以上传.ipynb文件
,但是上传之后的文件并不能够运行,因为它不是notebook格式类型
4、在script和notebook的编辑环境下上传新的 .ipynb文件,当前的代码都会被新上传的 .ipynb的代码替换,也就是说无论你上传多少个 .ipynb 文件,最后都只会保存最后一个.ipynb文件
如下图所示,可以通过手动创建.py文件
,而且你新建的这个’.py’文件还可以下载下俩,同时也可以新建文件夹
但是:
你新建的这个 .py 文件并不能够打开,也不能在里面写代码,不知道怎么搞,后续探索吧,如果有知道的欢迎留言交流。
.py文件
重要! 重要! 重要!
上面分析了这么多,都是基于 .ipynb类型的文件,而且只能够上传一个文件,更重要的是还不能够创建 .py 文件,但是我们项目都会创建很多 .py 文件互相导入,不会使代码过长,那如何在kaggle使用呢?
下面我们一起来看下这个问题怎么破:
1、当前的工作目录是在kaggle/working
目录下,你可以用如下代码查看:
import os
print(os.getcwd())
print(os.listdir(os.getcwd()))
# 结果
"""
/kaggle/working
['__notebook_source__.ipynb', '.ipynb_checkpoints']
"""
2、改变当前的工作目录
此时我们把当前的工作目录改到了input目录
下我们上传的项目,这样就可以直接使用我们在项目中的.py文件
啦
""" change working directory """
import os
if os.path.basename(os.getcwd()) == 'working':
os.chdir('../input/tf-gan-code-20181007/transparent_latent_gan_kaggle_2018_1007/transparent_latent_gan_kaggle_2018_1007')
print('current working directory is {}'.format(os.getcwd()))
print(os.getcwd())
print(os.listdir(os.getcwd()))
# 结果
"""
current working directory is /kaggle/input/tf-gan-code-20181007/transparent_latent_gan_kaggle_2018_1007/transparent_latent_gan_kaggle_2018_1007
/kaggle/input/tf-gan-code-20181007/transparent_latent_gan_kaggle_2018_1007/transparent_latent_gan_kaggle_2018_1007
['src', 'data', 'asset_model', 'configs', '.gitignore', 'asset_results', 'LICENSE', 'tests', 'README.md']
"""
问题待续:
如果我们开发好的项目可以直接通过这种方式上传到input文件夹,通过更改工作目录使用,但是如果文件需要修改,我们是否还是每次都需要进行上传,这样感觉比较麻烦,不知道有没有人知道解决方案,欢迎留言交流
kaggle创建新的kernel如何上传数据,一共有两种方式,点击Add Data
就可以看到
两种方式:
1、上传自己本地的数据集,这个一般比较慢
2、直接使用kaggle上现有的数据集,当然它也是需要下载的,但是相对自己本地是数据集比较快一点。
注意:
1、 上传的数据文件都放在了
input文件夹
下
2、所有的上传的数据集只能够读取read-only data
未完待续
报错:
Uploading a kernel failed. Please validate your kernel and try again at a later time.
在Notebook kernel
下上传文件报错,这里上传的时候只能够上传.ipynb类型的文件
,我之所以会出现这个错误就是由于上传的是.py
文件,所以上传之前要确定文件的类型
每次创建的时候都会让创建一个数据的标题(Enter Dataset Title
),其实是相当于数据存放的文件夹(即默认会创建一个以这个标题的文件夹,并把上传的数据放到这个文件夹中),如上图所我上传的文件是options.py文件
,输入的数据标题为options_args
。
options_args
options.py
/kaggle/input/options-agrs/options.py
可能细心的同学发现,options-args
是不是写错了,因该是下划线
吧。我一开始也是这么认为的,而且右边的数据文件结构中显示的也是下划线
,但是实时证明这样是访问不到文件的,当我列举了当前文件夹下的文件时,发现显示的是['options-aget', 'my-dataset']
(如图左下角所示)。what ? what ? what ? 但是咱能怎么班呢,只能接受事实呗!!!
注意:
在上传数据给数据命名的时候尽量不要用下划线,否则你不知道kaggle会把你的数据藏到哪里!
read-only data
上传的数据只可读,是真的烦,后面我想改要改一行代码,都要把所有的数据都重新上传一次,人生不怕原地爆炸后,就怕重头再来呀
。我先单独上传已经修改好的options.py文件
。然后使用shutil模块
把修改好的文件移动到input/my-dataset/ganimation_replicate
文件夹下,结果就告诉我该文件夹下的文件只能够读取,因此不能够进行写入操作。顿时我,我,我.....FK !
无奈,只能够重新上传所有的文件和代码了,希望有知道如何解决这个问题的童鞋,能够给予帮助!蟹蟹呀
参考:
1、参考1:https://zh.d2l.ai/chapter_deep-learning-basics/kaggle-house-price.html
2、参考2:https://zh.d2l.ai/chapter_computer-vision/kaggle-gluon-dog.html
3、参考3:https://github.com/apachecn/Interview
4、参考4:https://karbo.online/dl/kaggle-gpu/
5、参考5:https://zhuanlan.zhihu.com/p/60912138
6、参考6:
7、参考7:
一些开源的数据竞赛项目:
https://github.com/Smilexuhc/Data-Competition-TopSolution
简单先整理一点今天的摸索过程,自然是摸索肯定有很多不足之处,欢迎大家指导,一起交流,争取早日上船!
♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠