(1)深度学习学习笔记-数据操作和处理

news2024/9/20 10:39:50

文章目录

  • 前言
  • 一、张量操作
  • 二、csv文件数据操作
    • 数据预处理(读入csv文件作为pytorch能处理的)
  • 来源


前言

张量的一些处理和操作
csv文件数据操作


一、张量操作

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
[:,1]表示全部行 第二列
[:]是全取
[1:3,1:]:1:3表示1~3的左闭右开区间,1:表示从第一列开始的全部
[::3,::2]:表示每隔3行取一行,每隔2列取一列

import torch

# 张量表示
x = torch.arange(12)
print(x)
print(x.shape)  # shape属性访问张量的形状  ([12])表示向量(就一个维度) 长度12
print(x.numel())  # 张量中元素总数
# 改变张量形状而不改变元素数量和元素值 reshape函数
x = x.reshape((3, 4)) # 注意reshape后地址不变,所以如果x = torch.arange(12);y=x.reshape((3,4));y[:]=2;更改y后x也会改变
print(x)
# 使用全0/1
print(torch.zeros(2, 3, 4))  # 34列 的三维数组
print(torch.ones(1, 3, 4))  # 34列 的三维数组(二维数组(34))
# torch.tensor([3.5]) # 创建一个一维的
print(torch.tensor([[2, 1, 4, 3], [1, 2, 3, 4], [4, 3, 2, 1]]))  # 手动创建一个二维数组
print(torch.tensor([[2, 1, 4, 3], [1, 2, 3, 4], [4, 3, 2, 1]]).shape)
print(torch.tensor([[[2, 1, 4, 3], [1, 2, 3, 4], [4, 3, 2, 1]]]))  # 手动创建一个三维数组
print(torch.tensor([[[2, 1, 4, 3], [1, 2, 3, 4], [4, 3, 2, 1]]]).shape)

# 常见加减运算
x = torch.tensor([1.0, 2, 4, 8])  # 创建浮点向量
y = torch.tensor([2, 2, 2, 3])
print(x + y, x - y, x * y, x / y, x ** y)  # x**y表示对x求幂(二次方)
# 指数运算e的x次方
print(torch.exp(x))

x = torch.arange(12, dtype=torch.float32).reshape(3, 4)  # (1,3,4)三维

y = torch.tensor([[2.0, 1, 4, 3], [1, 2, 3, 4], [4, 3, 2, 1]])
print(torch.cat((x, y), dim=0))  # 表示在行上堆起来
print(torch.cat((x, y), dim=1))  # 表示在列上堆起来
print(x == y)  # 按元素判断是否等于 构建二元张量
print(x.sum())  # 对x全部求和

# 广播机制(可能会造成代码可以运行,但是结果不对)  3*1矩阵+1*2矩阵可以相加 会让3*1复制一下变成3*2 1*2复制一下边城3*2 两个3*2相加
a = torch.arange(3).reshape((3, 1))
b = torch.arange(2).reshape((1 * 2))
print(a + b)

print(x[-1])  # 最后一行
print(x[1:3])  # 12行(第2和第3行)

# 将元素写入矩阵
x[1, 2] = 9  # 修改第2行第三列

# 为多个元素赋相同值
x[0:2, :] = 12

# 遇到大矩阵时不要频繁赋值,可以采用id的方法
# id类似指针,表明y的唯一标识号,赋值后之前的内存已经被析构掉
before = id(y)
y = y + x
print(id(y) == before)

# 执行原地操作
z = torch.zeros_like(y)  # 创建和y的shape和数据类型一样的 不过数都是0
print('id(z):', id(z))
z[:] = x + y  # z中所有元素=x+y,对z的元素改写
print('id(z):', id(z))

# 如果没有重复使用x,也可以用x[]=x+y或x+=y减少内存开销
before = id(x)
x += y
print(id(x) == before)

# x转换为numpy张量
A = x.numpy()
B = torch.tensor(A)
print(A)
print(B)

# 大小为1的张量转化为python标量
a = torch.tensor([3.5])
print(a, a.item(), float(a), int(a))

二、csv文件数据操作

数据预处理(读入csv文件作为pytorch能处理的)

代码如下(示例):

import os
import pandas as pd

# 创建人工数据集,并存入csv(逗号分隔的文件)
os.makedirs(os.path.join('..', 'data'), exist_ok=True)  # 创建名为data的文件夹
data_file = os.path.join('..', 'data', 'house_tiny.csv')  # 创建csv文件
with open(data_file, 'w') as f:
    f.write('NumRooms,Alley,Price\n')  # 列名
    f.write('NA,Pave,127500\n')  # 每行表示一个数据样本
    f.write('2,NA,106000\n')
    f.write('4,NA,178100\n')
    f.write('NA,NA,140000\n')

# 读取csv
data = pd.read_csv(data_file)
print(data)

# 处理缺失数据 通常是删除和插入,最简单的方法是将这一行丢掉。
inputs, outputs = data.iloc[:, 0:2], data.iloc[:, 2]  # 把data中第1-2列读入inputs ,第3列读入outputs
inputs = inputs.fillna(inputs.mean(numeric_only=1))  # 将所有nan的填入这一列的均值(只有数值的可以平均,string的没法平均)
print(inputs)

# 对于input中的nan视为一个类别(0/1)
inputs = pd.get_dummies(inputs, dummy_na=True, dtype=int) # 不把dtype改为int的话会显示true false
print(inputs)
# 现在inputs和outputs中的所有条目都是数值类型,它们可以转换为张量格式
X, Y = torch.tensor(inputs.values), torch.tensor(outputs.values)
print(X, Y)


来源

b站 跟李沐学AI 动手学深度学习v2 04

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

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

相关文章

Node.js搭建Https服务

要搭建一个接收HTTPS请求的Node.js服务器,可以按以下步骤操作: 1. 初始化项目和安装依赖: bashnpm init -y npm install expresslatest npm install httpslatest 2. 生成证书文件: 这里按照自己的需求 去买ssl证书 或者获取免费证书 直接百度 阿里云获取免费证书等关键词即可…

Prefix-Tuning 阅读笔记

《Prefix-Tuning: Optimizing Continuous Prompts for Generation》 核心思想: 微调的时候,把预训练好的大transformer固定住不训练,在大transformer前面拼接几个token的参数,只训练前面这几个token的参数。 为什么有效 因为虽…

金融科技领先者Broadridge选择CloudBees CI来加速软件交付

Broadridge公司是全球金融科技领先者,通过丰富客户参与度、控制风险、优化效率和创造收入增长的解决方案为客户推动业务转型。 借助CloudBees CI,Broadridge为所有使用Jenkins的开发团队提供了集中管理和自助服务的体验。Broadridge能够不断为客户提供新…

vue 中node-sass和sass版本问题解决

先开始使用 “node-sass”: “^7.0.1” “sass-loader”: “^10.0.5” 然后使用npm install报错 后面百度,搜到了是因为 node-sass和sass-loader版本不对应造成。 然后修改版本,增加sass引用 “node-sass”: “^7.0.1” “sass-loader”: “^7.3.1”, “…

Mysql实现按月份查询挂号统计数据(聚合函数的使用)

最近公司要实现一个通过年月来查询每个月的挂号统计(当日挂号,预约挂号),因为医院每个月都要来问我们这边一次,每次都去数据库查询太麻烦了,所以就需要开发一个查询挂号统计的接口。 前面用了很多种方法,要…

计算机中的逻辑运算(与、或、非、异或、同或、与非、或非)

计算机中的逻辑运算又被称作为“布尔运算”,分别为:与、或,非,异或。此外在门电路中还有:同或、与非、或非。共七种。 这七种逻辑运算中,只有 逻辑非运算 是一元逻辑运算(一个运算操作数&#…

微信公众号接收事件推送XML数据包解析成实体对象

1.从request获取推送xml包 String callBackXml testNoticeService.formatNoticeParams(request); public static String formatNoticeParams(HttpServletRequest request){try(ByteArrayOutputStream output new ByteArrayOutputStream();InputStream input request.getIn…

微服务 springcloud 11 sleuth 链路跟踪,sleuth + zipkin 链路分析

随着系统规模越来越大,微服务之间调用关系变得错综复杂,一条调用链路中可能调用多个微服务,任何一个微服务不可用都可能造整个调用过程失败 spring cloud sleuth 可以跟踪调用链路,分析链路中每个节点的执行情况 01.微服务中添加 …

如何使用UpdraftPlus迁移备份网站到新网站?

这个问题是关于将您的站点克隆或迁移到新的网站URL的问题。如果您想克隆一个站点进行测试,或者在新版本上线之前移动到新主机并进行测试,以及许多其他类似情况,迁移尤其有用。 在下面的示例中,我们迁移到一个完全新的 WordPress …

搭建Hadoop高可用框架分布式集群

搭建Hadoop高可用框架分布式集群 一.基础配置 1.创建虚拟机,修改虚拟机的主机名 2.修改网络配置 master:192.168.6.200 slave1:192.168.6.201 slave2:192.168.6.202 3.互ping测试 4.sudo授权 5.安装vim编辑器 6.配置网络映射 master配置映射 master向slave1传递映…

MATLAB 之 Simulink系统的仿真与分析

这里写目录标题 一、Simulink 系统的仿真与分析1. 设置仿真参数1.1 Solver 参数设置1.2 Data lmport/Export 参数设置 2. 运行仿真与仿真结果分析2.1 运行仿真2.2 仿真结果分析 一、Simulink 系统的仿真与分析 系统的模型建立之后,选择仿真参数和数值算法&#xff…

LabVIEW自适应屏幕分辨率的两种方法

文章目录 前言一、方案1:组合缩放1、举例2、验证 二、方案2:分隔栏匹配窗格1、举例2、验证 前言 前阵子做的一个项目是在显示器分辨率为 2560*1600,缩放选项为 150% 的笔记本上开发的,但是当 vi 文件在另一台显示器分辨率为 1920…

ThingsBoard IoT Gateway 专栏 分享 前言

最近有朋友询问tb-gateway相关的问题,于是抽业余时间查看了一下官方文档,并做了一些尝试和案例。接下来我会将这些分享给大家。这也是一个系列,将会和我的ThingsBoard专栏放在一起。 ThingsBoard IoT Gateway 能够帮助你将连接到传统和第三方…

一次Android APK打包的报错

打包的时候报了一个错 没有记下来 但是解决方法是 打开Window-> Package Manager 移除这个(这个是Unity的广告组件

杰西·利弗莫尔股票大作手操盘术策略

文章目录 上升趋势演变多次回撤回升,区间震荡向上突破,恢复上升趋势前期回升高点下挫,趋势逆转警告信号向下突破,确认下降趋势 下降趋势演变多次回升回撤,区间震荡向下突破,恢复下降趋势前期回撤低点反弹&a…

mysql-大数据的上传(load data)

文章目录 1. 大批量数据的上传如果使用insert语句就会很慢,可以使用load data的方式 1. 大批量数据的上传如果使用insert语句就会很慢,可以使用load data的方式 如下,我建立了一个这样的数据表, 2. 我要将以下数据插入数据表&am…

基于FPGA的RC滤波器设计实现

目录 简介: 传递函数 FPGA代码实现 总结 简介: RC滤波器的特性基本情况介绍 RC一阶低通滤波介绍;RC滤波器电路简单,抗干扰性强,有较好的低频性能,并且选用标准的阻容元件易得,所以在工程测…

【滤波】平滑

%matplotlib inline#format the book import book_format book_format.set_style()简介 当你考虑未来的数据时,卡尔曼滤波器的性能并不是最优的。例如,假设我们在跟踪飞行器,最新的观测值突然偏离的很离谱,就像这样(我…

PHP的pack/unpack

前言:直接参照官网。 PHP: pack - Manual PHP中文手册 PHP中国镜像 php 国内镜像 PHP官方网站 PHP: unpack - Manual PHP中文手册 PHP中国镜像 php 国内镜像 PHP官方网站 1、作用 (1)pack:将数据打包成二进制字符串。将输入数据…

链表刷题(9-11)

目录 相交链表 环形链表 环形链表Ⅱ 相交链表 力扣 第一种思路:判断尾节点地址是否相同,时间复杂度为O(N^2)。 第二种思路:(节点对齐)记录两个链表节点个数,再根据节点差设置两个快慢指针进行next节点比对。时间复杂度O(N)(3N)…