Kaggle 导入自定义函数库

导   论:Kaggle 每周可以白嫖GPU资源约40小时,Kaggle相比于Colab而言可以离线运行,而且运行时间挺长的。Colab如果不开pro会员的话只能使用Tesla k40 这种低级显卡约4小时,开会员的话可以用Tesla V100、P100等显卡。具体Colab使用教程可以参考:谷歌Colab一、简介 Colab 是谷歌推出的一款在线深度学习工具,提供Tesla V100 、T100等GPU,现在国内大量人使用,已经被玩坏了。今年四月份的时候,使用Colab还不用开Pro,就能使用十几个小时的GPU,现在只能使用cpu了。而且经常分不到资源,经常会断开。目前可能由于显卡短缺的原因,不容易预约到Tesla V100,经常是Tesla P100 (16GB),而且有时候不能多开3个GPU窗口了。训练网络时候,Tesla V100速度是P100的近3倍。 今天开了P...https://blog.csdn.net/cj151525/article/details/118883162

Kaggle侧重于数据竞赛,他们希望你使用Kaggle来跑竞赛题目而不是你的实验工程。然而Kaggle不同于Colab,Colab有Google Drive(谷歌云盘)可以存储我们本地的Pycharm实验项目,这样就像是在本地使用PyCharm一样。

例如,我有这样的工程实验要跑:

Kaggle 导入自定义函数库_第1张图片

如果使用Colab直接上传整个工程文件即可,然后在notebook中直接运行main.py即可,非常简单。但是如果使用Kaggle那就非常麻烦了,Kaggle、Colab的notebook其实就是Jupyter。众所周知,Jupyter做交互式的代码运行非常方便,但是如果要写工程项目的话就是一坨屎(不接受反驳)。所以Kaggle运行工程文件就很痛苦,甚至需要import 写好的功能函数.py文件都非常麻烦。这可能就是Kaggle的初心吧,它希望你用来跑竞赛题目而非让你白嫖。

其实还是用办法使用Kaggle来跑我们的工程项目实验的,首先如果工程项目简单的话,那就把每个.py文件写在一个notebook中,这样就可以方便调用。但是如果工程项目非常复杂,那么就必须将.py文件导入到虚拟机中。下面进行详细介绍:

创建函数功能文件:这里有两个函数我们想要写到一个.py文件夹中,看下面的代码:

# This script shows you how to create python functions and save
# them in an output file to use in a kernel. To see how to use them in
# a kernel go here: https://www.kaggle.com/rtatman/import-functions-from-kaggle-script/

import inspect
import os

# function that takes a number, multiplies it by two 
# and adds three
def times_two_plus_three(input):
    return (input * 2) + 3

# function that prints the word "cat"
def print_cat():
    print("cat")

# function to write the definition of our function to the file
def write_function_to_file(function, file):
    if os.path.exists(file):
        append_write = 'a' # append if already exists
    else:
        append_write = 'w' # make a new file if not
    with open(file, append_write) as file:
        function_definition = inspect.getsource(function)
        file.write(function_definition)

# write both of our functions to our output file        
write_function_to_file(times_two_plus_three, "my_functions.py")
write_function_to_file(print_cat, "my_functions.py")
print('Ok')

 写完之后运行是不会存储下来的,我们必须提交才能得到最终的my_funcitons.py文件:

Kaggle 导入自定义函数库_第2张图片

 提交之后等运行完毕后,我们退出到Code页面,选择your work,这里面就是刚才提交后保存的my_functions.py 文件,然后直接点进去找到刚才运行的版本,再点进去后往下拉就能看见我们保存的数据:

Kaggle 导入自定义函数库_第3张图片

Kaggle 导入自定义函数库_第4张图片

Kaggle 导入自定义函数库_第5张图片

如下图所示,可以看见我们的my_functions.py文件,我们选择New Notebook就会将这个文件作为输入数据导入到虚拟机中。其实这也是一种作弊的用法,Kaggle的初心是让我们使用运算后的数据。但是我们却保存了一个.py的文件。所以如果工程项目有很多个文件夹或者各种.py文件,那么这种方法也很慢,而且也无法在线修改代码,非常复杂。所以下面我们直接把工程项目当做数据集直接导入到我们的数据中然后再读取到虚拟机。

Kaggle 导入自定义函数库_第6张图片

导入自定义函数.py文件:点击New Notebook后会创建导入my_functions.py的notebook,于是我们可以使用自定义的函数库,这里主要路径不要写错,我们能够导入进来的.py文件一定是放在working里的文件,所以需要将input里面的文件复制到output的working路径里面。这样就能调用我们的自定义函数了。

# import module we'll need to import our custom module
from shutil import copyfile

# copy our file into the working directory (make sure it has .py suffix)
copyfile(src = "../input/create-function/my_functions.py", dst = "../working/my_functions.py")

# import all our functions
from my_functions import *

# we can now use this function!
num=times_two_plus_three(4)
print(num)
# and this one too!
print_cat()

Kaggle 导入自定义函数库_第7张图片

导入工程项目:类似上面,可以直接将工程文件夹作为数据导入然后在notebook中复制到working工作目录下进行导入,这里千万注意看清楚文件的路径。导入数据如下图所示:

Kaggle 导入自定义函数库_第8张图片

 

Kaggle 导入自定义函数库_第9张图片

同样,在notebook中进行调用,这样就无需手动复制代码了:

Kaggle 导入自定义函数库_第10张图片

Kaggle 导入自定义函数库_第11张图片

如果本篇博客对您有用,欢迎点赞收藏!欢迎关注博主公众号:“矩阵科学” ,谢谢! 

你可能感兴趣的:(深度学习·,Kaggle导入函数,Kaggle,Kaggle,导入工程文件,Kaggle,导入.py文件,白嫖Kaggle,GPU)