IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> pytorch中的tensor -> 正文阅读

[人工智能]pytorch中的tensor

1、什么是tensor?

tensor中文意为张量,提到张量最先能想到物理中的张量。有基础物理知识的人都知道,没有方向只有大小的量称为标量,例如普通数字1, 2, 3等,可以比较大小;既有方向又有大小的量称为矢量,例如物理概念中的作用力,不能够简单的比较大小;在物理中学习单元体应力应变状态的时候提到了张量,张量是一组能够表示某一个微元体应力应变状态的分量的集合。张量(tensor)是pytorch中最基础的一种数结构,熟悉numpy数组的话会发现tensor和numpy数组的操作很相似,但不同之处在于tensor具有更多的属性,相当于表示数组数据在运算过程中的状态,tensor中不仅仅包含了数组数据本身,还包含了dtype,grad,device等属性。

2、tensor的操作

熟悉numpy的话对tensor的操作会感觉很熟悉。导入torch和numpy,从数据创建tensor:

import torch
import numpy as np

# initialize tensor
# # from data
data = [[1, 2], [3, 4]]
tensor_data = torch.tensor(data, dtype=torch.int32)
print(tensor_data)
print(type(tensor_data))
print(tensor_data.shape)

从numpy创建tensor


# from numpy
arr1 = np.array([[4, 5, 6], [7, 8, 9]])
arr_tensor = torch.from_numpy(arr1)
print(arr_tensor)
print(type(arr_tensor))
print(arr_tensor.shape)

其它方式创建tensor:

shape = (2, 3)
rand_tensor = torch.rand(size=shape)
one_tensor = torch.ones(size=shape)
zero_tensor = torch.ones(size=shape)
print(rand_tensor.shape)
print(rand_tensor)

tensor的shape,dtype,device属性等,判断cuda,将tensor由cpu移到gpu:

# attributes of tensor
print(f'shape: {rand_tensor.shape}; dtype: {rand_tensor.dtype}; device: {rand_tensor.device}')
if torch.cuda.is_available():
    print(torch.device)
    tensor = rand_tensor.to('cuda')
    print(tensor.device)

tensor的聚合:cat聚合方式,dim维度从要聚合的tensor的size中选择,0按行聚合,1按列聚合

# cat and stack tensor
print(rand_tensor)
# dim choose from tensor size , 0 for row, 1 for columns
cat_tensor = torch.cat([rand_tensor, rand_tensor], dim=1)
print(cat_tensor)
原:
tensor([[0.9003, 0.7300, 0.3107],
        [0.8845, 0.6043, 0.0443]])

dim取0聚合:
tensor([[0.9003, 0.7300, 0.3107],
        [0.8845, 0.6043, 0.0443],
        [0.9003, 0.7300, 0.3107],
        [0.8845, 0.6043, 0.0443]])

dim取1聚合:
tensor([[0.8397, 0.2339, 0.8829, 0.8397, 0.2339, 0.8829],
        [0.7830, 0.4890, 0.0135, 0.7830, 0.4890, 0.0135]])

stack方式:与cat不同,stack以堆叠的方式进行,dim可取到size+1,此例中可取0,1,2。

stack_tensor = torch.stack([rand_tensor, rand_tensor], dim=2)
print(stack_tensor)
原:
tensor([[0.9003, 0.7300, 0.3107],
        [0.8845, 0.6043, 0.0443]])

dim取0:
tensor([[[0.6554, 0.0863, 0.1121],
         [0.6554, 0.0863, 0.1121]],

        [[0.6638, 0.2260, 0.1568],
         [0.6638, 0.2260, 0.1568]]])


dim取1:
tensor([[0.1256, 0.7978, 0.3251, 0.1256, 0.7978, 0.3251],
        [0.6428, 0.6606, 0.1968, 0.6428, 0.6606, 0.1968]])


dim取2:
tensor([[[0.1256, 0.1256],
         [0.7978, 0.7978],
         [0.3251, 0.3251]],

        [[0.6428, 0.6428],
         [0.6606, 0.6606],
         [0.1968, 0.1968]]])

tensor的基本运算举例

元素相乘、矩阵相乘、自加运算:

# tensor multiply
print(one_tensor)
one_tensor_mul = one_tensor.mul(one_tensor)
print(one_tensor_mul)
one_tensor_matmul = one_tensor.matmul(one_tensor.T)
print(one_tensor_matmul)


# self operations
one_tensor.add_(5)
print(one_tensor)

输出:

one_tensor:
tensor([[1., 1., 1.],
        [1., 1., 1.]])

one_tensor_mul:
tensor([[1., 1., 1.],
        [1., 1., 1.]])

one_tensor_matmul:
tensor([[3., 3.],
        [3., 3.]])

one_tensor自加运算:
tensor([[6., 6., 6.],
        [6., 6., 6.]])

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2021-09-18 10:08:28  更:2021-09-18 10:09:36 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/27 14:30:49-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码