动手学深度学习——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设备是不会及时释放的,只能等系统检测到设备空闲超时后才会释放,具体空闲超时时间数分钟到半个小时不等。

参考资料

  • 手机验证方法

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/686399.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【栈】1096. 花括号展开 II

本文涉及知识点 栈 LeetCode 1096. 花括号展开 II 如果你熟悉 Shell 编程,那么一定了解过花括号展开,它可以用来生成任意字符串。 花括号展开的表达式可以看作一个由 花括号、逗号 和 小写英文字母 组成的字符串,定义下面几条语法规则&…

服务器数据恢复—raid5阵列磁盘坏道离线导致数据丢失的数据恢复案例

服务器数据恢复环境: 某品牌x3850 X5服务器,服务器上有一组由5块硬盘组建的raid5阵列(包含一块热备盘),安装linux操作系统,运行oracle数据库。 服务器故障: 服务器上raid5阵列中两块硬盘由于未…

【Linux操作系统】进程状态(1)

🎉博主首页: 有趣的中国人 🎉专栏首页: Linux 🎉其它专栏: C初阶 | C进阶 | 初阶数据结构 小伙伴们大家好,本片文章将会讲解 Linux操作系统 进程状态 的相关内容。 如果看到最后您觉得这篇文章…

HDFS 之 DataNode 核心知识点

优质博文:IT-BLOG-CN 一、DataNode工作机制 DataNode工作机制,如下所示: 【1】一个数据块在 DataNode上以文件形式存储在磁盘上,包括两个文件,一个是数据本身,一个是元数据包括数据块的长度&#xff0c…

Codeforces Round 951 (Div. 2)(A~C)

目录 A. Guess the Maximum B. XOR Sequences C. Earning on Bets 这次比赛也是打的稀碎了,第二个少个break检查了15分钟才检查出来,第三个符号搞错了,错了两次,道心直接破碎了 A. Guess the Maximum 题意:我们对…

计算机组成原理-cache详解

一、Cache的概念和原理 1、cache原理 2、cache性能分析 一道例题 3、cache和主存数据交换的单位 每次访问到的主存块会立即放入cache中 小结 二、cache和主存之间的映射关系 全相联映射 全相联访存过程 直接映射 组相联映射 小结 三、cache替换算法 在直接映射中&#xff0c…

webgl_framebuffer_texture

ThreeJS 官方案例学习&#xff08;webgl_framebuffer_texture&#xff09; 1.效果图 2.源码 <template><div><div id"container"></div><div id"selection"><div></div></div></div> </templa…

【sklearn】【逻辑回归1】

学习笔记来自&#xff1a; 所用的库和版本大家参考&#xff1a; Python 3.7.1Scikit-learn 0.20.1 Numpy 1.15.4, Pandas 0.23.4, Matplotlib 3.0.2, SciPy 1.1.0 1 概述 1.1 名为“回归”的分类器 在过去的四周中&#xff0c;我们接触了不少带“回归”二字的算法&#xf…

IDEA破解后的配置

以下所有操作都要求进入全局setting而不是某一个项目的setting 进入全局Setting File→close project 进入欢迎页面 低版本 然后点击Setting 关闭自动更新 不关闭有可能会破解失败 Appearance & Behavior->System Settings->Updates下取消Automatically chec…

k8s 对外服务之 Ingress(HTTPS/HTTP 代理访问 以及Nginx 进行 BasicAuth )

目录 一 Ingress HTTP 代理访问虚拟主机 &#xff08;一&#xff09;原理 &#xff08;二&#xff09;实验 1&#xff0c;准备 2&#xff0c;创建虚拟主机1资源 3&#xff0c;创建虚拟主机2资源 4&#xff0c;创建ingress资源 5&#xff0c;查看相关参数 6&#xff0…

ai写作工具哪些好用,分享4种ai智能写作软件

当我们踏入这个充满创意与无限可能的自媒体时代&#xff0c;ai写作工具就如同一盏盏闪耀的明灯&#xff0c;照亮我们的创作之路。那么&#xff0c;市面上的ai写作工具哪些好用呢&#xff1f;对于这个问题&#xff0c;今天&#xff0c;本文就带领大家一同揭开那神秘的面纱&#…

编译等底层知识

目录 一. GCC命令语句大全 二. GCC编译4个阶段 三. makefile的使用 四. CMake 五. GNU工具链开发流程图 六. Keil中的地址段 七. 静态库和动态库 一. GCC命令语句大全 -c只编译源文件&#xff0c;生成目标文件&#xff08;.o 文件&#xff09;&#xff0c;不进行链接。…

如何查询公网IP?

在互联网中&#xff0c;每个设备都有一个唯一的公网IP地址&#xff0c;用于标识设备在全球范围内的位置。查询公网IP是一个常见的需求&#xff0c;无论是用于远程访问、网络配置还是其他目的&#xff0c;了解自己的公网IP地址都是很有必要的。本文将介绍几种常见的方法来查询公…

Java并发编程中Future使用

Future类有什么用 Future类是异步思想的典型应用&#xff0c;主要用在一些需要执行耗时任务的场景&#xff0c;避免程序一直原地等待耗时任务完成&#xff0c;执行效率太低。具体来说&#xff1a;**当我们执行某一个耗时的任务时&#xff0c;可以将这个耗时任务交给一个子线程…

python3 -m http.server 检查打包前端的项目

python3 -m http.server这是 Python 提供的一个内置的简单 HTTP 服务器。当你在终端中运行 python3 -m http.server 命令时(在对应的打包目录比如dist目录)&#xff0c;Python 会启动一个 HTTP 服务器&#xff0c;它会将当前工作目录下的文件作为静态文件提供给浏览器。这个服务…

selenium非全新的方式同时启动多个浏览器又互不影响的一种实现方法,欢迎讨论!

最近在做模拟浏览器批量定时自动点击实现批量操作功能&#xff0c;主要使用selenium&#xff0c;但是发现selenium直接调用本地浏览器&#xff0c;启动的是一个全新的&#xff08;与手动打开的不一致&#xff09;&#xff0c;网站可以检测到&#xff0c;每次都要双重验证(密码登…

UnityXR Interaction Toolkit 如何使用XRHand手部识别

前言 Unity的XR Interaction Toolkit是一个强大的框架,允许开发者快速构建沉浸式的VR和AR体验。随着虚拟现实技术的发展,手部追踪成为了提升用户交互体验的关键技术之一。 本文将介绍如何在Unity中使用XR Interaction Toolkit实现手部识别功能。 准备工作 在开始之前,请…

论文阅读 A Distributional Framework for Data Valuation

本论文解决的问题 量化数据价值&#xff08;机器学习模型训练中各个数据点的贡献&#xff09; 避免数据价值受到其所处数据集的影响&#xff0c;使数据点的估值更加稳定、一致 变量假设 假设 D 表示一个在全集 Z 上的数据分布。对于监督学习问题&#xff0c;我们通常认为 Z…

RapidMiner数据挖掘4 —— 决策树

0. 序章 0.1 文本说明 所有应用程序操作的名称和编程说明都以黄色背景书写&#xff0c;问题以蓝色背景书写&#xff0c;以方便他们在文本中识别。 在整个课程中&#xff0c;请逐步遵循所有说明&#xff0c;并确保获得预期结果&#xff0c;然后再继续下一部分或问题。 通过在Ub…

Hadoop3:MapReduce源码解读之Map阶段的CombineFileInputFormat切片机制(4)

Job那块的断点代码截图省略&#xff0c;直接进入切片逻辑 参考&#xff1a;Hadoop3&#xff1a;MapReduce源码解读之Map阶段的Job任务提交流程&#xff08;1&#xff09; 6、CombineFileInputFormat原理解析 类的继承关系 与TextInputFormat切片机制的区别 框架默认的TextI…