动手学深度学习——Kaggle小白入门

1. kaggle注册

注册网址:https://www.kaggle.com

注册账号不需要代理,但手机号验证需要代理。如果要使用GPU或TPU,则需要进行手机号验证。

手机号验证位置:右上角头像的settings界面。

手机号验证时会有几个问题:

  1. 无验证码,提示:Captcha must be filled out.
  • 原因:人机验证组件在国内被拦截,所以看不到验证按钮,需要代理才能看到人机身份验证
  1. 如果出现人机验证窗口,必须在代理状态下才能激活。一旦激活之后,必须切回正常状态,再进行国内的电话验证,不然代理的区域,跟验证电话的区域不一致,会报验证失败。

手验证完结果:PhoneVerification一栏必须是verified才可以。

更详细的手机验证方法见文章最后参考资料中的链接。

2. 新建notebook

写代码前需要先创建notebook。

创建完后操作界面如下图所示,左边为代码区,右边为数据区。

  • notebook创建完后,默认会自动创建两个目录:输入/kaggle/input和输出/kaggle/output。
  • 代码区会自动生成一段默认代码,功能是打印输入目录中的文件列表。

这个notebook的具体操作与jupyter notebook完全一致。

在这里插入图片描述
此notebook在创建时已经默认安装了python环境和pytorch库。
在这里插入图片描述

3. 传数据

模型训练都需要使用大批量的专用数据集,传数据可分为两种操作:

  • Add Input: 添加kaggle平台上已有数据集。
  • upload:上传数据集,支持本地压缩文件,也支持指定一个远程的URL来下载

不论哪种操作方式,传的数据都会保存到/kaggle/input文件夹中。

这里以Add Input为例来演示如何传数据。

添加好数据集后如下所示:

此时,我们运行代码区的默认代码,就能打印出刚添加的数据集文件列表。
在这里插入图片描述
可以尝试用pandas库来读取下数据:

具体pandas操作方法可参考:动手学深度学习——pandas

df = pd.read_csv("/kaggle/input/fashionmnist/fashion-mnist_train.csv")
print(df.shape)

>>> (60000, 785)

可以看到,该数据集有60000行、785列。

再尝试读取下前三行数据的内容。

print(df.iloc[0:3,:])

label  pixel1  pixel2  pixel3  pixel4  pixel5  pixel6  pixel7  pixel8  \
0      2       0       0       0       0       0       0       0       0   
1      9       0       0       0       0       0       0       0       0   
2      6       0       0       0       0       0       0       0       5   

   pixel9  ...  pixel775  pixel776  pixel777  pixel778  pixel779  pixel780  \
0       0  ...         0         0         0         0         0         0   
1       0  ...         0         0         0         0         0         0   
2       0  ...         0         0         0        30        43         0   

   pixel781  pixel782  pixel783  pixel784  
0         0         0         0         0  
1         0         0         0         0  
2         0         0         0         0  

[3 rows x 785 columns]

FashionMnist是一个时装分类的图像数据集,每条数据的第一列为标签分类(0-9),表示10种时装分类。后面784列表示28x28图像展开后每一个像素的值。

iloc是pandas的一个切片操作,与python中的数组切片功能相似,不同的是:python中是对一维数组进行切片,iloc可以同时对多维数组进行切片。

4. 使用GPU

默认情况下,创建的notebook都是没有启用GPU的,可以通过简单API来查看运行环境上的CPU和GPU信息。

import os 
import torch

print(f"cpu nums:{os.cpu_count()}")

# 检查是否有可用的 GPU
if torch.cuda.is_available():
    # 获取 GPU 设备信息
    for i in range(torch.cuda.device_count()):
        gpu = torch.cuda.get_device_properties(i)
        print("GPU {}:".format(i))
        print("型号:", gpu.name)
        print("核心数:", gpu.multi_processor_count)  # 核心数
        print("显存大小:", gpu.total_memory // (1024**2), "MB")  # 显存大小,转换为 MB
        print("-----------")
else:
    print("没有可用的 GPU。")
cpu nums:4
没有可用的 GPU。

启用GPU: 右边的功能框找见Session options—>accelerator—>选择GPU T4 x2。

此时再运行上面的GPU设备检测代码,已经有了GPU设备信息:

cpu nums:4
GPU 0:
型号: Tesla T4
核心数: 40
显存大小: 15102 MB
-----------
GPU 1:
型号: Tesla T4
核心数: 40
显存大小: 15102 MB
-----------

简单使用下GPU做矩阵乘法运算:

GPU主要用来加速pytorch,tensorflow,pandas、numpy是不会加速的。

# 创建两个随机张量
a = torch.rand(3, 4)
b = torch.rand(4, 3)


# 将张量移动到GPU上
if torch.cuda.is_available():
    a = a.cuda()
    b = b.cuda()
    c = torch.matmul(a, b)
    print(f"a: {a}")
    print(f"b: {b}")
    print(f"c: {c}")
a: tensor([[0.1732, 0.5473, 0.1821, 0.8392],
        [0.5551, 0.6203, 0.9935, 0.3267],
        [0.4213, 0.0994, 0.7320, 0.7110]], device='cuda:0')
b: tensor([[0.9064, 0.8337, 0.6155],
        [0.7991, 0.4399, 0.3409],
        [0.8997, 0.2004, 0.2329],
        [0.2817, 0.1979, 0.8481]], device='cuda:0')
c: tensor([[0.9946, 0.5877, 1.0473],
        [1.9847, 0.9994, 1.0616],
        [1.3201, 0.6824, 1.0667]], device='cuda:0')

可以看到,a、b、c三个矩阵均位于cuda 0号设备上。

CUDA是NVIDIA提供的一种GPU并行计算框架,在pytorch中使用 .cuda() 表示让我们的模型或者数据从CPU迁移到GPU上(默认是0号GPU),通过GPU开始计算。

5. 释放GPU

kaggle为每位用户只提供每周30h的免费GPU使用时间,所以用完后要及时手动释放来节省GPU可用时长。

注意:GPU使用时长的计算不是以实际运算时间来计,而是以用户绑定GPU设备的时长来计,这意味着哪怕你的代码没有在GPU上运行,只是简单绑定也会计算你的使用时长。

方式1:将Accelerator置为None来单独释放GPU设备。

方式2:停止会话来释放GPU设备。
在这里插入图片描述

如果直接关闭网页(没有执行上面的操作),GPU设备是不会及时释放的,只能等系统检测到设备空闲超时后才会释放,具体空闲超时时间数分钟到半个小时不等。

参考资料

### Kaggle入门方法 对于希望进入Kaggle平台的新手而言,可以从以下几个方面入手: #### 1. 创建账户并熟悉环境 首先需要访问[Kaggle官网](https://www.kaggle.com/)注册账号[^2]。完成注册后,可以通过浏览主页上的竞赛列表、数据集和Notebooks来初步了解该平台的功能布局。 #### 2. 学习基础工具与技术 为了更好地参与Kaggle竞赛,建议掌握Python编程语言及其常用库(如Pandas用于数据分析,NumPy支持数值计算,Matplotlib和Seaborn实现可视化),以及机器学习框架Scikit-learn的基础应用[^1]。这些技能可以帮助快速上手简单的预测模型构建任务。 #### 3. 参加适合初学者的比赛 推荐从难度较低的小型项目开始尝试,比如泰坦尼克号生存预测案例或者房价估计等问题[^3]。这类题目通常具有清晰的目标设定,并附带详尽的教学材料指导整个流程操作。 #### 4. 利用现成资源进行模仿练习 利用平台上已有的高质量Kernel(Notebook),阅读别人的解决方案思路并与之对比分析差异所在。这样既能学到具体的技术细节又能开阔视野看到不同的解法角度。 #### 5. 加入讨论区互动交流 积极参与论坛中的问答环节,在遇到困难时寻求帮助的同时也试着解答他人疑问从而加深自己对知识点的理解程度。此外还可以关注那些表现优异选手发布的博客文章获得更多启发。 ```python import pandas as pd from sklearn.model_selection import train_test_split from sklearn.linear_model import LogisticRegression from sklearn.metrics import accuracy_score # 假设我们正在处理 Titanic 生存预测问题 data = pd.read_csv('titanic.csv') X = data[['Age', 'Fare']] y = data['Survived'] # 处理缺失值 (这里简单填充平均数) X.fillna(X.mean(), inplace=True) X_train, X_test, y_train, y_test = train_test_split( X, y, test_size=0.2, random_state=42) model = LogisticRegression() model.fit(X_train, y_train) predictions = model.predict(X_test) print(f'Accuracy: {accuracy_score(y_test, predictions)}') ``` 以上代码片段展示了如何加载数据、预处理特征变量、划分训练测试集合建立逻辑回归分类器评估性能指标准确率的过程示例。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

沉下心来学鲁班

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值