2022-07-02 深度学习Python笔记 Kaggle执行原来的python项目文件

使用Kaggle的好处想必大家都知道:有免费的GPU可用,对于学生党就可以白嫖算力,其二是对于未来想从事数据科学方面的同学,Kaggle是一个不错的锻炼地方,通过打比赛提高能力。

对于习惯使用pycharm开发工具的人来说,Kaggle对于项目的组织不太好用。pycharm中可以使用不同的python文件和目录对程序进行维护,而在Kaggle中,程序只能通过notebook向记流水帐一样,从头写到尾。

在Kaggle中如何避免COPY所有不同python程序,统一放到notebook里,通过查找网上资料和亲自实验,可以不用改变原来的程序组织形式执行原来的程序,以helloworld项目为例,步骤如下:

1. 在Kaggle中,将python文件作为dataset形式,上传到你的账户中,进到你的code中,选择某一个notebook, 然后在界面中点击+Add data:

点击Add data

2. upload一个新的dataset

dataset upload

点击upload后,输入dataset title: 如 helloword, 选择上传多个python文件如:main.py, hellowords.py, 最后点击create

create dataset


包含python文件的helloword dataset创建成功:

helloword

helloword数据集详情:可以看到数据集包含main,py, hellowords.py

helloword详情

3. 将helloword数据集引入到你的code中:

点击+Add data:


Add Data

Add helloword:

Add Helloword

添加成功:

添加成功

4. 在notebook中调用主程序main.py: 

!python ../input/helloword/main.py

如何知道main.py的路径?../input/helloword/main.py

把鼠标移到main.py, 会出现Copy file path提示,点击后,然后黏贴到!python后面即可

Copy file path

5. main.py如何引用其他python文件的函数,这个需要修改你原来的main.py文件:

import sys

sys.path.insert(1, '../input/helloword')  #添加此语句,告知系统hellowords.py在哪个路径中

from hellowords import get_hello_world

print("calling get_hello_world():")

print(get_hello_world())

6. 运行 notebook,kaggle执行python命令,执行main.py, 在main.py里面,通过添加系统路径,调用hellowords.py中的get_hello_word()函数,并打出Hello Word!

运行notebook

7. 下面有几点需要关注:

1)在使用Kaggle提供的GPU服务时,请先不用勾选GPU,当保存并且运行时,选择GPU,这样防止你没有执行训练过程但是一直是运行状态就会消耗你的GPU时间


2)Kaggle只提供一周37小时,Kaggle重设credit是星期六的0点:

reset

3)还有一个注意点是:你的训练时间不能超过12小时,否则Kaggle会自动停止你的运行任务,这个问题在任何网上没有提到,我暂时也没有在Kaggle文档中找到,是我在执行训练任务时,发现任务已停止,从训练日志中提示已超出最大执行时间。


exceeded the max allowed execution duration


Used:12h:0m

4)有时候你的任务会被Queued, 是因为当时运行notebook的资源请求超过Kaggle系统的处理能力,需要将你的任务处于先排队状态,一旦有可用资源,你的任务立刻执行。可以先自己尝试关掉浏览器,然后重新打开,重新执行任务,如果还是Queued状态,那就需要等一段时间。

queued


Traffic ahead

5) 在创建新的数据集时候,上传数据集文件成功了,但是在Kaggle Processing data过程中会出错,信息为:

"Unfortunately, we could not create your dataset.

Failed to check creation status. Please try again later."

原因是:

>>你的数据集中文件名包含非法字符如'&', ';', ','等,请统一更新为合法文件名 。

>>你的文件名很长很长,Kaggle也不认识,请尽量变短你的文件名。

6) 在kaggle中文显示乱码:在Kaggle中可以查看支持的所有字体:

a=sorted([f.name for f in matplotlib.font_manager.fontManager.ttflist])

print(a)

可以发现并没有支持中文(可能未来会有)。

解决方法:

到C:\Windows\Fonts中,选择几个字体文件,打成zip文件,创建一个字体文件数据集,接着通过Add data将字体文件数据集引入到当前notebook下:


引入字体文件集

在代码中添加:

myfont =matplotlib.font_manager.FontProperties(fname=r'../input/chinesefonts/chinesefonts/STXINWEI.TTF')

最后在显示中文的地方添加myfont即可:

plt.subplot(3,4,1) #要生成三行四列,这是第一个图plt.subplot('行','列','编号')

plt.plot(t,s,'b--')

plt.title('前夕', fontproperties=myfont,size=14)

plt.ylabel('y1')


汉字(新魏)能正常显示

你可能感兴趣的:(2022-07-02 深度学习Python笔记 Kaggle执行原来的python项目文件)