355|2

194

帖子

4

TA的资源

纯净的硅(初级)

楼主
 

动手学深度学习(PyTorch版)- 【读书活动-心得分享】pytorch 张量数据运算 [复制链接]

 

简介

 

在本章节我讲介绍深度学习里的一个重要的数据结构即多维度的数组. 通过视频的学习和API的使用可以让大家更好的掌握张量的运算和转换等.

 

正文

 

N维度数组是机器学习和神经网络中的主要数据结构

 

 

 

三维数组可以用RGB图片进行理解, 宽高和RGB通道, 四维则为N个三维数组放在一起,五维类似视频(具有一个时间的维度)

 

   

创建数组

 

 

 

访问数组

 

 

 

注意这个访问一列的是错误的, 正确的应该是 :1

子区域指的是, 从第一行开始进行访问,到第三行的开头, 不包括第三行. [1:3,1:] 访问第一行到第三行开头, 从第一列开始的所有元素

[::3, ::2] 访问元素, 访问所有的行, 每三行一跳, ::2 访问所有列, 每两行一跳.

 

# -*- coding: utf-8 -*-
"""数据操作.ipynb

Automatically generated by Colab.

Original file is located at
    https://colab.research.google.com/drive/1-uLN5MuvAFSxmxk9r3ZLl327Ck7R6h86
"""

# 导入 torch
import torch

# 创建一个数据区间
x = torch.arange(12)

x

# 查看数据集的形状(向量, 数组)
x.shape

#查看数据集的大小(标量)
x.numel()

#改变数组的形状, 感觉和numpy一摸一样
X = x.reshape(3,4)

X

# 使用全0 或者全1 从特定分布中采样的数字
# 创建两个全0 或者全1的数组

torch.zeros((2,3,4))

# 创建一个数组, 包括四个5行六列的数组
torch.ones((2,3,4))

# 张量创建数组
torch.tensor([[2,3,4],[5,6,7]])

arr =torch.tensor([[[2,3,4],[5,6,7]],[[2,3,4],[5,6,7]]])

arr.size()

arr.shape



#矩阵的运算, 如果定义的数据包含浮点数的话, 那么运算的类型实际为浮点型运算
x = torch.tensor([1.0,2,4,8])
y = torch.tensor([2,2,2,2])

x + y, x-y , x*y , x/y , x**y

#指数的运算

torch.exp(x)

# 连接张量

'''
假设 X 和 Y 的形状分别为 (2, 3, 4) 和 (2, 3, 4):
torch.cat((X, Y), dim=0):结果将是形状为 (4, 3, 4) 的张量(行数增加)。
torch.cat((X, Y), dim=1):结果将是形状为 (2, 6, 4) 的张量(列数增加)。
torch.cat((X, Y), dim=2):如果 X 和 Y 的最后一个维度相同(如 (2, 3, 4)),结果将是形状为 (2, 3, 8) 的张量(深度增加)。
'''
X = torch.arange(12, dtype=torch.float32).reshape(3,4)
Y = torch.tensor([[2.0,1,4,5],[1,2,3,4],[4,3,2,1]])
torch.cat((X,Y), dim=0),torch.cat((X,Y), dim=1)
# 按照维度进行合并, 需要注意的是,这个地方有点抽象, 如果dimension为0的话,则是按行进行合并, 如果是1的话则是按照列合并

#判断两个矩阵是否相等

X == Y

# 对矩阵元素进行求和
X.sum()

# 这边有一个广播机制就是说,当两个变量的形状不同的时候(维度相同),进行数学操作,那么为了能够满足操作能够成立.那么广播机制回自动对其形状进行变换成相同的然后再进行像家

a = torch.arange(3).reshape((3,1))
b = torch.arange(2).reshape((1,2))
a,b

# 实际上由于广播机制,数组的形状变成了3,2 和 3,2 . 然后使用变形后的变量进行运算
a+b

# 元素的访问, access the last line
X,X[-1]

# line from 1 to 3 , except 3
X[1:3]

# 改变元素内容

X[2,3] = 9
X

# 区域赋值, 0-2 行不包括第二行
X[0:2,:] = 12
X

# numpy 和 tensor的转换
A = X.numpy();
B = torch.tensor(A)
type(A), type(B)

# 将张量转换为PY数据类型的标量
a = torch.tensor([3.5])

a, a.item(), float(a), int(a)

 

数据操作.ipynb (19 KB, 下载次数: 0)
数据操作.py (2.56 KB, 下载次数: 0)

 

虽然代码不是很多,但是理解起来还是非常费时的,视频长度才十分钟,学习和写笔记大概花了一个半小时.

最新回复

张量计算的维度有限制吗?     详情 回复 发表于 2024-9-24 11:58
点赞 关注
 
 

回复
举报

6583

帖子

9

TA的资源

版主

沙发
 

张量计算的维度有限制吗?  

点评

我明天试一下, 这个张量计算 ppt上的好像是可以到4-5维的样子.   详情 回复 发表于 2024-9-25 01:18
个人签名

在爱好的道路上不断前进,在生活的迷雾中播撒光引

 
 
 

回复

194

帖子

4

TA的资源

纯净的硅(初级)

板凳
 
秦天qintian0303 发表于 2024-9-24 11:58 张量计算的维度有限制吗?  

我明天试一下, 这个张量计算 ppt上的好像是可以到4-5维的样子. 

 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表