Kaggle从入门到实战教程(新手必备)


因为自己的电脑GPU是1050Ti,4G显存,有些任务实在跑不起来,学生党也租不起服务器,只能去Kaggle上蹭一下,奈何,网上关于Kaggle的实际操作使用流程太少,即使有也不够细致,只有自己在黑夜中慢慢摸索,特此写下一些自己的摸索过程!


kaggle kernels提供两种规格的docker供食用。
1、CPU型:4 cores 16g内存
2、GPU型:2 cores 14g内存 tesla-p100 16G
登录kaggle之后,顶部导航条第三个就是Kernels


1 kernel的创建

首先打开Kaggle的网站之后,你会看到有New Notebooks,这里就是新建一个kernel,这个新建kernel就类似自己在本地IDE上创建一个项目。

在这里插入图片描述
Kaggle新建kernel有两种方式,这个主要是编辑的环境:

  • Notebook:类似Jupyter notebook
  • Script:类似Pycharm这种编辑环境

编程语言目前只支持python和R两种

在这里插入图片描述

1.1 Notebook的kernel的创建(从零开始创建)

什么叫从零开始创建呢,此时只是创建一个kernel,当前kernel是没有数据的,如果需要数据需要自己上传

1.1.1 相关的配置说明

创建好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

1.2 Script的kernel的创建(从零开始创建)

Script的kernel创建和Notebook的kernel创建类似,创建好如下如:
在这里插入图片描述

1.3 从已有的数据集开始创建kernel

在这里插入图片描述
点进去Cifar10数据集之后,就可以在这个数据集上创建一个kernel,相当是把Cifar10数据集直接放到了新创建kernel的input文件夹
在这里插入图片描述
在这里插入图片描述

2 kaggle创建新的文件

2.1 kaggle通过上传创建新的文件

在这里插入图片描述

我们可以看到:
在两种编辑模式下都有:

  • 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文件

2.2 自己手动创建py文件

如下图所示,可以通过手动创建.py文件,而且你新建的这个’.py’文件还可以下载下俩,同时也可以新建文件夹
在这里插入图片描述

但是:

你新建的这个 .py 文件并不能够打开,也不能在里面写代码,不知道怎么搞,后续探索吧,如果有知道的欢迎留言交流。

2.3 kaggle如何直接上传完整的项目使用,如何使用.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文件夹,通过更改工作目录使用,但是如果文件需要修改,我们是否还是每次都需要进行上传,这样感觉比较麻烦,不知道有没有人知道解决方案,欢迎留言交流

3 kaggle如何上传数据

kaggle创建新的kernel如何上传数据,一共有两种方式,点击Add Data就可以看到
在这里插入图片描述
两种方式:
1、上传自己本地的数据集,这个一般比较慢
2、直接使用kaggle上现有的数据集,当然它也是需要下载的,但是相对自己本地是数据集比较快一点。

注意:

1、 上传的数据文件都放在了input文件夹
2、所有的上传的数据集只能够读取read-only data

4 实战–如何在Kaggle上提交自己的项目结果

未完待续

5 kaggle使用常见问题

5.1 上传问题

报错:Uploading a kernel failed. Please validate your kernel and try again at a later time.

Notebook kernel下上传文件报错,这里上传的时候只能够上传.ipynb类型的文件,我之所以会出现这个错误就是由于上传的是.py文件,所以上传之前要确定文件的类型
在这里插入图片描述

5.2 kaggle上传完数据集之后访问不到

在这里插入图片描述
每次
每次创建的时候都会让创建一个数据的标题(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会把你的数据藏到哪里!

5.3 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


简单先整理一点今天的摸索过程,自然是摸索肯定有很多不足之处,欢迎大家指导,一起交流,争取早日上船!


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述
♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠

猜你喜欢

转载自blog.csdn.net/weixin_41010198/article/details/103292324