【深度学习】日常笔记16

news2024/12/22 23:19:39

可以将pd.DataFrame数据结构理解为类似于Excel中的表格。pd.DataFrame是pandas库提供的一个二维数据结构,用于存储和操作具有行和列的数据。它类似于Excel中的工作表,其中每一列可以是不同的数据类型(例如整数、浮点数、字符串等)。虽然DataFrame的每一列可以具有不同的数据类型,但在数据分析和建模过程中,通常建议遵守每列(特征列)的数据类型规范。

创建缺失值NaN的代码:

import pandas as pd

data = {'Name': ['John', 'Alice', 'Bob', None, 'Mike'],

        'Age': [32, 28, 45, 42, None]}

data = {'A': [1, 2, None, 4, 5],

        'B': [1.5, 2.5, None, 4.5, 5.5]}

df['C'] = [None, 2, 3, None, 5]  # 也可以使用None指定缺失值

df = pd.DataFrame(data)

独热编码(One-Hot Encoding)是指将分类变量转换为虚拟变量(dummy variables)的一种常见方法。通过独热编码,我们可以将每个类别表示为一个二进制的指示符特征,其中只有一个特征为1,表示当前观测值所属的类别,其余特征都为0。

pd.get_dummies()函数在Pandas中提供了一种方便的方法来执行独热编码。通过设置dummy_na=True参数,可以将缺失值也视为有效的特征值,并为其创建相应的列。

独热编码通常用于在机器学习和数据分析任务中处理分类变量,以便在建模过程中能够更好地利用这些特征。

计算均⽅误差使⽤的是MSELoss类,也称为平⽅L2范数再乘个1/n,MSE全称为Mean Squared ErrorL2范数:


Adam优化器,常常使用Adam优化器的原因是对初试给定的超参数学习率lr不是很敏感。Adam是一种优化算法的缩写。它代表"Adaptive Moment Estimation"(自适应矩估计)。Adam算法结合了自适应学习率和动量法的优点,广泛应用于深度学习中的参数优化。

Adam算法使用了两个主要的概念:动量(momentum)和自适应学习率。动量可以理解为模拟物体在梯度方向上运动时的惯性,使得参数更新更加平稳。自适应学习率则根据参数的历史梯度信息来自适应地调整学习率,更好地适应不同参数的特性。

Adam算法的主要步骤包括计算梯度的一阶矩估计(即均值)和二阶矩估计(即方差),然后利用这些估计来更新参数。相较于其他传统的优化算法,Adam算法通常能够更快地收敛,并且对于大多数的深度学习任务表现良好。

在进行K折交叉验证时,确保将数据集刚好分成K个fold是理想的情况,但实际应用中可能会遇到无法均匀划分的情况。当数据集的样本数量不能被K整除时,可能会出现以下两种情况:

  1. 如果样本数量不能被K整除并且余数较小,可以选择将剩余的样本均匀分配到各个fold中。例如,如果有100个样本,要进行5折交叉验证,每个fold将有20个样本。如果有101或102个样本,可以将多出来放到已有的fold中,所以会有1或2个fold中有21个样本,而其余的fold中有20个样本。
  2. 如果样本数量不能被K整除并且余数较大,可以选择在数据预处理阶段进行调整。例如,可以考虑随机删除一部分样本,使得数据集能够被K整除。这样可以确保每个fold的样本数尽量接近,并且保持数据的随机性。

在实际应用中,了解数据集的特点和目标任务的要求,以及适应性地选择合适的划分策略,是确保K折交叉验证的有效性的关键。


for epoch in range(num_epochs):
    for X, y in train_iter:
        optimizer.zero_grad()
        l = loss(net(X), y)
        l.backward()
        optimizer.step()
    train_loss.append(log_rmse(net, train_features, train_labels))
    if test_labels is not None:
        test_loss.append(log_rmse(net, test_features, test_labels))

第二重循环的X是一个小批次的特征。X表示每个小批次的特征,而每个小批次包含了batch_size个样本。train_iter是一个数据迭代器,它会根据batch_size将训练数据划分成小批次,并提供每个小批次的特征(X)和标签(y)。因此,在第二重循环中,每次迭代都会处理一个小批次的数据样本。

在每次迭代中,通过for X, y in train_iter语句获取到一个小批次的特征和标签。X表示该小批次的特征,形状为[batch_size, feature_dim],其中batch_size是小批次的大小,feature_dim是特征的维度。y则表示该小批次对应的标签,形状为[batch_size]。

这样做的好处是,通过一次性处理多个样本,可以利用硬件加速的优势,提高训练的效率和速度。同时,通过使用小批次的随机梯度下降(SGD)更新参数,有助于增加模型的泛化能力。


随便参加了一个kaggle比赛


import torch

from torch import nn

net = nn.Sequential(nn.Linear(4, 8), nn.ReLU(), nn.Linear(8, 1))

X = torch.rand(size=(2, 4))

net(X)

上面的模型net具有三个层:

  • 第一层为 nn.Linear(4, 8),它是一个线性变换层,输入大小为4,输出大小为8。
  • 第二层为 nn.ReLU(),它是一个ReLU激活函数层。
  • 第三层为 nn.Linear(8, 1),它是另一个线性变换层,输入大小为8,输出大小为1。

综上所述,网络中的层索引分别是 ‘0’,‘1’ 和 ‘2’,而只有第一个和第三个层有参数。因此,当运行 print(*[(name, param.shape) for name, param in net.named_parameters()]) 时,你会得到以下输出:

('0.weight', torch.Size([8, 4]))

('0.bias', torch.Size([8]))

('2.weight', torch.Size([1, 8]))

('2.bias', torch.Size([1]))

其中,‘0.weight’ 和 ‘0.bias’ 分别代表第一层的权重和偏置参数,‘2.weight’ 和 ‘2.bias’ 分别代表第三层的权重和偏置参数。第二层没有参数,因此没有被打印出来。

net.state_dict()['2.bias'].data可以访问第二层的偏置参数为tensor([-0.0291])。

torch.nn.init.xavier_normal_() 是在高斯分布中采样进行Xavier初始化,而 torch.nn.init.xavier_uniform_() 是在均匀分布中采样进行Xavier初始化。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

接口防护电路

一、接口电路是电路中与用户或者外界媒介进行交互的部分,是内部核心敏感电路和外部设备进行信息交互的桥梁。接口电路一般分为输入接口电路和输出接口电路两种。接口电路的防护设计就是为了隔离外部危险的信号,防止外部干扰信息进入系统内部核心敏感电路…

Linux系统USB转串口芯片 GPIO使用教程

一、简介 WCH的多款USB转单路/多路异步串口芯片,除串口接口以外,还提供独立的GPIO接口,各GPIO引脚支持独立的输出输入,GPIO功能的使用需要与计算机端厂商驱动程序和应用软件配合使用。各芯片的默认GPIO引脚状态有所区别&#xff…

Redis——常见数据结构与单线程模型

Redis中的数据结构 Redis中所有的数据都是基于key,value实现的,这里的数据结构指的是value有不同的类型。 当前版本Redis支持10种数据类型,下面介绍常用的五种数据类型 底层编码 Redis在实现上述数据结构时,会在源码有特定的…

RCNA——单臂路由

一,实验背景 之前的VLAN实现的很多都是相同部门互相访问,不同部门无法访问。不过这次整来了一个路由器,领导说大部分的部门虽说有保密信息需要互相隔离,但是这些部门和其它部门也应该互相连通以方便工作交流。因此要配置新的环境&…

2023-08-11 LeetCode每日一题(矩阵对角线元素的和)

2023-08-11每日一题 一、题目编号 1572. 矩阵对角线元素的和二、题目链接 点击跳转到题目位置 三、题目描述 给你一个正方形矩阵 mat,请你返回矩阵对角线元素的和。 请你返回在矩阵主对角线上的元素和副对角线上且不在主对角线上元素的和。 示例 1&#xff1…

linux安装ftp

一、安装 参考博客 https://blog.csdn.net/dafeigecsdn/article/details/126518069 rpm -qa |grep vsftpd # 查看是否安装ftp yum -y install vsftpd # 安装vsftpuseradd -d /home/lanren312 lanren312 # 指定在/home目录下创建用户 passwd lanren312 # 给用户设置密码 # 输…

2022年03月 C/C++(一级)真题解析#中国电子学会#全国青少年软件编程等级考试

第1题:双精度浮点数的输入输出 输入一个双精度浮点数,保留8位小数,输出这个浮点数。 时间限制:1000 内存限制:65536 输入 只有一行,一个双精度浮点数。 输出 一行,保留8位小数的浮点数。 样例输…

【Unity每日一记】让一个物体按余弦曲线移动—(三角函数的简单运用)

👨‍💻个人主页:元宇宙-秩沅 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 秩沅 原创 👨‍💻 收录于专栏:uni…

麻省理工学院利用水泥和炭黑制造出超级电容器

麻省理工学院的研究人员展示了一种使用低成本水泥和炭黑的制造的超级电容器,这一发明可能会彻底颠覆可再生能源的存储。 ​为了解决太阳能、风能和潮汐能等间歇性和非周期性电源的普及问题,实用并且廉价的电力储存技术一直是重要的环节。MIT的研究人员最…

从docker启动kali

前言: 偶然间在docker中发现有Linux的镜像,有了尝试的想法,于是有了本文 选了星星最多的那个,直接pull,或者命令行执行 docker run kalilinux/kali-rolling 介绍中说,没有任何工具,所以需要自己安装。 直接…

Jpa与Druid线程池及Spring Boot整合(二): spring-boot-starter-data-jpa 踏坑异常处理方案

Jpa与Druid线程池及Spring Boot整合(一) Jpa与Druid线程池及Spring Boot整合(二):几个坑 附录官网文档:core.domain-events域事件 从聚合根发布事件 存储库管理的实体是聚合根。在领域驱动设计应用程序中,这些聚合根通常会发布领域事件。Sp…

Golang函数以及函数和方法的区别

在接触到go之前,我认为函数和方法只是同一个东西的两个名字而已(在我熟悉的c/c,python,java中没有明显的区别),但是在golang中者完全是两个不同的东西。官方的解释是,方法是包含了接收者的函数。…

直播预告|EasyV全新倾斜摄影组件上线!提升大规模、高精度实景建模效率

倾斜摄影,也被称为斜摄影或倾斜摄影测量,是一种高精度、高分辨率的遥感技术,用于获取地表地貌、建筑物、自然环境等目标的三维信息。在城市级数字孪生可视化建设过程中,通常会使用倾斜摄影技术以增强地理信息分析和虚拟建模的能力…

【瑞吉外卖】Linux学习

Linux常用命令 Linux命令初体验 Linux的命令都是由一个或几个单词的缩写构成的 命令对应英文作用lslist查看当前目录下的内容pwdprint work directory查看当前所在目录cd [目录名]change directory切换目录touch [文件名]touch如果文件不存在,新建文件mkdir [目录…

数据结构:堆的实现(C实现)

个人主页 : 个人主页 个人专栏 : 《数据结构》 《C语言》 文章目录 一、堆二、实现思路1. 结构的定义2. 堆的构建 (HeapInit)3. 堆的销毁 (HeapDestroy)4. 堆的插入 (HeapPush)5. 堆的删除 (HeapPop)6. 取堆顶的数据 (HeapTop)7. 堆的数据个数 (HeapSize…

C#小轮子:Visual Studio自动编译Sass文件

文章目录 前言插件安装插件使用compilerconfig.jsonsass输入和css输出(自动生成)默认配置(我不懂就不去动他了) 前言 我们知道css文件用起来太麻烦,如果样式一多,嵌套起来用css样式就眼花缭乱。Sass使用层…

量化交易可视化(10)-等高线图

等高线图的含义 等高线图(Contour plot)是一种二维图形展示方式,用于表示函数在二维平面上的等高线。等高线图的每条等高线代表函数在该高度上的取值相同的点的集合。 等高线图的绘制方法 在matplotlib中,可以使用contour()函数…

Unity使用C# Protobuf源码

目录 第一步:下载源码 第二步:运行C#构建文件 第三步:处理报错(如果你已安装对应的SDK则不会报错) 第四步:复制库文件到你的工程 第一步:下载源码 protobuf github源码https://github.com/p…

银河麒麟安装php7.1.33

银河麒麟V10兼容CentOS 8 安装过程与CentOS类似。 TencentOS3.1安装PHPNginxredis测试系统_乐大师的博客-CSDN博客 可以参考之前我写的文章。 不过有2个细节不同,下面说下。 问题1:编译错误提示“error:off_t undefined” 解决方法: 编…

Python实现调用百度翻译的API

import requests import hashlib import random import jsondef translate(text, from_lang, to_lang):app_id XXXXX # 替换为你的App IDsecret_key XXXXX # 替换为你的Secret Key# 生成随机数salt random.randint(32768, 65536)# 计算签名sign app_id text str(salt) …