首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏机器学习之禅

    3 | PyTorch张量操作:基本操作、索引、命名

    1.0 张量也是很类似的,这里我们来写一下,导入torch包,调用了一个ones方法,这个方法的作用是给生成的张量内部全部赋值为1 import torch a = torch.ones(3) a #输出一下张量结果 #这里看到了,最后一个变成了2,这些操作跟列表操作基本没啥区别 3.张量的本质 书上的这一小段我没太看明白,就文字描述来说,大意是列表中的元素在实际内存的存储中使用的是随机区块,而PyTorch中的张量使用的往往是连续内存区块 首先尝试用一维张量来存储,那就要把每个坐标拆开,然后要用脑子记住0,1位置标识第一个坐标点,2,3位置标识第二个坐标点,4,5位置标识第三个坐标点。 使用shape方法查看张量的形状,这里返回的size表示这是一个三行二列的张量(数组) points.shape out:torch.size([3,2]) tips:当我们用索引访问张量中的元素,或者张量中的张量时 ., 3.], [2., 1.]]]) 5.张量命名 最开始读这一小节的时候有点难度,但是总体而言,张量命名就是指的tensor中有个给维度命名的功能,看起来还是有点实用的,主要就是防止在张量的反复变换中

    1.1K10编辑于 2022-07-11
  • 来自专栏悟道

    5-3记忆型递归

    18 12:06 下午 * @Version 1.0 */ public class Main { static int n; static int m; //记忆化递归 +1][m+1]; rec = new int[n + 1][m + 1]; System.out.println(dp(1,1));; } //记忆化递归一定要有返回值

    28610发布于 2021-04-19
  • 来自专栏王的机器

    张量 101

    X4 在 X3 基础上添加了频率维度(灰色箭头),从 3张量扩展成 4 维张量 (4D tensor)。 ? , 3) ) 不难看出 X0, X1, X2, X3 都是用 np.array 直接设定张量里的元素来定义张量 X4 用 np.ones 和张量的形状 (60000,28, 28, 3) 来定义一个所有元素都是 # 0维张量 X0 = 5 # 1维张量 X1 = nd.arange(12) # 2维张量 X2 = X1.reshape( (3, 4) ) # 3张量 X3 = nd.random.normal X2 将一维张量 X1 重新排成 3×4 的二维张量 X3 用 nd.random.normal 和张量的形状 (3, 4, 5) 来定义一个高斯随机张量 X4 用 nd.zeros 和张量的形状 ( X3 用 cat 把 X2 (3×3) 和另一个 3×3张量按第 3 维度上拼接起来 X4 用 repmat 把元素 5 复制一个形状为 [2, 3, 1, 4] 的张量 3 机器学习的张量 3.1

    3.5K20发布于 2019-07-05
  • 来自专栏毛利学Python

    tensor张量

    张量 在TensorFlow系统中,张量的维数来被描述为阶.但是张量的阶和矩阵的阶并不是同一个概念.张量的阶(有时是关于如顺序或度数或者是n维)是张量维数的一个数量描述.比如,下面的张量(使用Python 中list定义的)就是2阶. t=[[1,2,3],[4,5,6],[7,8,9]] ? 创建张量 ? ], tf.float32)first_primes = tf.Variable([2, 3, 5, 7, 11], tf.int32)its_very_complicated = tf.Variable 如何这点张量的阶数,并将维数降低 # 4维0矩阵my_image = tf.zeros([10, 299, 299, 3]) # batch x height x width x colormy_imageOUT

    1.1K20发布于 2019-11-04
  • 来自专栏python3

    Python3之弹性力学——应力张量2

    问题 已知某应力张量的分量为 \[ \sigma_{11}=3,\quad\sigma_{12} = \sigma_{13} = 1, \quad \sigma_{22} = \sigma_{33} = 0, \quad\sigma_{23} = 2 \] 求 1、全部主应力 2、最大主应力对应的主方向 3、求方向矢量为 $\boldsymbol{n} = \left(0, \dfrac{1}{\sqrt 应力张量 已知应力张量有如下形式 \[ \left[ \begin{array}{ccc} \sigma_{x} & \tau_{xy} & \tau_{xz}\\ \tau_{yx} & \sigma y} & \tau_{yz}\\ \tau_{zx} & \tau_{zy} & \sigma_{z} \end{array} \right] = \left[ \begin{array}{ccc} 3 1, 1], [1, 0, 2], [1, 2, 0]]) sigma \[\left[\begin{matrix}3 & 1 & 1\\1 & 0 & 2\\1 & 2 & 0\end{matrix

    75230发布于 2020-01-21
  • 来自专栏产品经理的人工智能学习库

    张量 – Tensor

    文章目录 小白版本 张量是属于线性代数里的知识点,线性代数是用虚拟数字世界表示真实物理世界的工具。 百度百科版本 张量(tensor)理论是数学的一个分支学科,在力学中有重要应用。张量这一术语起源于力学,它最初是用来表示弹性介质中各点应力状态的,后来张量理论发展成为力学和物理学的一个有力的数学工具。 张量之所以重要,在于它可以满足一切物理定律必须与坐标系的选择无关的特性。张量概念是矢量概念的推广,矢量是一阶张量张量是一个可用来表示在一些矢量、标量和其他张量之间的线性关系的多线性函数。 查看详情 维基百科版本 在数学中,张量是一种几何对象,它以多线性方式将几何向量,标量和其他张量映射到结果张量。因此,通常在基础物理和工程应用中已经使用的矢量和标量本身被认为是最简单的张量。 另外,来自提供几何矢量的矢量空间的双空间的矢量也被包括作为张量。在这种情况下,几何学主要是为了强调任何坐标系选择的独立性。 查看详情

    1.5K20发布于 2019-12-18
  • 来自专栏xiaosen

    PyTorch张量

    创建全为指定值张量 import torch shape = (3, 3) zero_tensor = torch.zeros(*shape) print(zero_tensor) shape = (3, 3) one_tensor = torch.ones(*shape) print(one_tensor) 张量元素类型转换 tensor.type(torch.DoubleTensor) CPU上创建张量 import torch tensor_cpu = torch.tensor([1, 2, 3]) 在 GPU 上创建张量(如果 GPU 可用): tensor_gpu = tensor_cpu.to 我们也可以将张量创建在 GPU 上, 能够利用对于矩阵计算的优势加快模型训练。将张量移动到 GPU 上有如下方法: 1. 使用 cuda 方法 2. 直接在 GPU 上创建张量 3. 以下是使用 PyTorch 进行张量基本运算的代码案例: import torch # 创建张量 x = torch.tensor([1, 2, 3]) y = torch.tensor([4, 5

    65510编辑于 2024-03-24
  • 来自专栏python3

    Python3之弹性力学——应力张量1

    题目 已知某点的应力张量为: \[ \left[ \begin{array}{ccc} \sigma_{x} &\tau_{xy} &\tau_{xz}\\ \tau_{yx} &\sigma_{y} & 1 & 2\\ 1 & \sigma_{y} & 1\\ 2 & 1 & 0 \end{array} \right] \left[ \begin{array}{c} n_1\\ n_2\\ n_3 应力张量 于是,应力张量为 \[ \left[ \begin{array}{ccc} \sigma_{x} & \tau_{xy} & \tau_{xz}\\ \tau_{yx} & \sigma_{y \left[ \begin{array}{ccc} 0 & 1 & 2\\ 1 & 1 & 1\\ 2 & 1 & 0 \end{array} \right] \] 特征值问题 求主应力,即为求应力张量的特征值 } \sigma_1 & = & 3\\ \sigma_2 & = & 0\\ \sigma_3 & = & -2 \end{array} \right. \] Python3代码求解 符号运算求特征值

    88510发布于 2020-02-10
  • 来自专栏xiaosen

    Tensors张量操作

    (f"ones Tensor: \n {x_ones} \n") # 保持形状不变但改变数据属性的新张量 x_rand = torch.rand_like(x_data,dtype=torch.float ]]) # 在CPU上的张量 x_gpu = x_cpu.to(device) # 移动到GPU 数据的运算 这些操作中的每一个都可以在GPU上运行(通常比在CPU上运行的速度更快)。 item()获取里面的值 print("求和,agg_item = " , agg_item,type( agg_item) ) 在PyTorch中,当你想要从一个标量张量(即形状为(1,)或者空的张量 这个方法会返回张量中的数据,将其转换为Python的基本数据类型。 _2],dim=0)) print(torch.cat([tensor_1,tensor_2],dim=1)) 我们平时的张量有两个维度↓和→: ↓就是0维度,→就是1维度。 

    65610编辑于 2024-05-28
  • 来自专栏机器学习与统计学

    TensorFlow2.0(3):张量排序、最大最小值

    TensorFlow2.0(1):基本数据结构——张量 1 排序 1.1 sort:返回逆序排序后的Tensor import tensorflow as tf a = tf.random.shuffle array([[0, 0, 0], [2, 2, 2], [1, 1, 1]])> 返回的张量中,每一个元素表示b中原来元素在该行中的索引。 ([3,3,3],minval=1, maxval=10, dtype=tf.int32) b <tf.Tensor: id=210, shape=(3, 3, 3), dtype=int32, numpy 3)的Tensor,argmin(a)返回的是shape为(3,)的Tensor,因为没有指定比较的维度,默认比较的是第0维度的元素,也就是每一列数据;对于shape为(33,3)的Tensor,argmin =221, shape=(3, 3, 3), dtype=int32, numpy= array([[[1, 2, 7], [9, 3, 3], [5, 4, 8]],

    3.3K20发布于 2019-12-23
  • 来自专栏python深度学习

    张量张量网络背景和意义-基础知识

    实际上,一阶张量代表的一个矢量,比如我们平时用python所定义的一个数组变量: 1 2 3 x = [1, 0] y = [0, 1, 0] z = [1, 2, 3, 4] 那么这里的x,y,z都是一阶的张量 而二阶张量所表示的含义是一个二维的矩阵,如我们常见的python多维数组: 1 2 M = [[1, -1], [-1, 1]] N = [[1, 3], [2, 4], [5, 6]] 这里定义的M, 那么根据这个客观规律,我们可以再推广到零阶张量和更加高阶的张量: 1 2 3 pi = 3.14 P = [[[1]]] Q = [[[1, 1, 1], [1, 1, 1], [1, 1, 1]]] 0.88983912] 同时我们也考虑下另外一种张量运算的场景,一个高阶的张量与另外一个高阶的张量进行运算: 1 2 3 4 5 6 7 import numpy as np A = np.random.rand numpy.dot来处理,因此我们还是适用了专业的张量计算函数numpy.einsum来进行处理,计算结果如下: 1 2 3 4 5 6 7 8 9 10 11 12 A: [[[[0.85939221

    2.2K10发布于 2021-04-02
  • 来自专栏深度学习

    【深度学习】Pytorch 教程(十二):PyTorch数据结构:4、张量操作(3):张量修改操作(拆分、拓展、修改)

    高维张量 【深度学习】pytorch教程(八):PyTorch数据结构:2、张量的数学运算(6):高维张量:乘法、卷积(conv2d~ 四维张量;conv3d~五维张量3张量的统计计算 【深度学习 】Pytorch教程(九):PyTorch数据结构:3张量的统计计算详解 4、张量操作 1. 张量变形 【深度学习】Pytorch教程(十):PyTorch数据结构:4、张量操作(1):张量变形操作 2. 索引 3. 张量拆分 split   沿指定维度将张量拆分为多个张量 import torch # 创建一个张量 x = torch.tensor([[1, 2, 3], [4, 5, 6]]) y1, y2 = torch # 创建一个张量 x = torch.tensor([[1, 2, 3, 4, 5, 6]]) # 沿指定维度均匀分割为多个张量 y = x.chunk(3, dim=1) for chunk

    68210编辑于 2024-07-30
  • 来自专栏深度学习

    【深度学习】Pytorch教程(八):PyTorch数据结构:2、张量的数学运算(6):高维张量:乘法、卷积(conv2d~四维张量;conv3d~五维张量

    (3, 5, 6) result = torch.matmul(tensor1, tensor2) print(result.size()) # 输出为 (3, 4, 6),说明两个张量进行了批量乘法 2) tensor3 = torch.cat([tensor1, tensor1], dim=1) # 通过 unsqueeze 添加新的维度来复制成三维张量 # tensor1_3d = tensor1 ()) # 输出为 (2, 4, 32, 32) 通道匹配:卷积核的输入通道数必须与输入张量的通道数相同( 3=3 ),这样才能进行逐通道的卷积操作。 大小匹配:卷积核的大小必须小于或等于输入张量的大小( 3<32 ),否则无法在输入张量上进行卷积操作。 三维卷积conv3d(五维张量) import torch import torch.nn.functional as F #batch_size=2, channel=3, depth=10, height

    1.2K10编辑于 2024-07-30
  • 来自专栏机器学习/数据可视化

    TensorFlow张量知识

    TensorFlow张量 本文记录的是TensorFlow中的张量基础知识,包含: 张量类型 张量数据类型 张量创建 张量类型 维数 阶 名字 例子 0-D 0 标量scalar s = 1,2,3 1 -D 1 vector v = [1,2,3] 2-D 2 matrix m = [[1,2,3],[4,5,6]] n-D n tensor t = [[[ (有n个括号) 张量可以表示0-n阶的数组 ])> b.dtype tf.int64 b.shape TensorShape([2, 3]) print(b.shape) (2, 3) 基于numpy数组 方式1:通过numpy数组来创建张量: 维度的记忆方式: 一维:直接写个数 二维:用[行, 列]表示 多维:用[n,m,j,k…]表示 全0张量 tf.zeros(3) <tf.Tensor: shape=(3,), dtype=float32 , 0], [0, 0, 0], [0, 0, 0]])> 全1张量 tf.ones(3) <tf.Tensor: shape=(3,), dtype=float32, numpy

    73030编辑于 2023-08-23
  • 来自专栏探物及理

    RL实践3——为Agent添加Policy、记忆功能

    对于一般问题,Agent包括如下功能 对环境的引用 自身变量:Q值,状态值的记忆 策略方法 动作执行方法 学习方法:改进策略,这部分是关键 class Agent(): def __init__ 同时没有记忆功能的Agent只能进行单一episode的学习,无法对其他的episode学习,无法进行batch学习,上限较低,对于复杂问题,为了增强学习的鲁棒性,往往需要输入数据的规模扩充,也就是对Agent 有了记忆能力的要求。 实现方式 抽象基类Agent 为了让代码具有较高的复用性和可读性,提现python的集成和多态特性,将Agent抽象为一个基类,在子类中实现记忆功能。 a:{1:<3} r:{2:<4} is_end:{3:<5} s1:{4:<3}".\ format(self.data[0], self.data

    1K20发布于 2020-09-10
  • 来自专栏Michael阿明学习之路

    Pytorch 张量tensor

    文章目录 1. tensor 张量 2. 运算 3. 切片、形状size()、改变形状view() 4. item() 只能读取一个元素 参考 http://pytorch123.com/ 1. tensor 张量 empty 不初始化 import , [2,4]]) tensor([[5.5000, 3.0000], [2.0000, 4.0000]]) new_* 方法,继承之前张量的属性,也可以覆盖以前的属性 x = x.new_ones 运算 x = torch.eye(3) y = torch.zeros(3,3) print(x+y) # + print(torch.add(x,y)) # add res = torch.empty 3]) # in-place 加法 y.add_(x) # y = y+x, y 会变, 注意是 add_ 有下划线 print(y) 3.

    87510发布于 2021-02-19
  • 来自专栏计算机视觉理论及其实现

    Pytorch张量(Tensor)复制

    ., 3.], requires_grad=True)clone_x = x.clone()detach_x = x.detach()clone_detach_x = x.clone().detach( x= torch.tensor([1., 2., 3.], requires_grad=True)clone_x = x.clone()detach_x = x.detach()clone_detach_x ---------------tensor([-0.0043, 0.3097, -0.4752])NoneFalseFalse------------------------------------3. ()clone_detach_x = x.detach().clone()f = torch.nn.Linear(3, 1)y = f(clone_x)y.backward()print(x.grad) x = torch.tensor([1., 2., 3.], requires_grad=True)f = torch.nn.Linear(3, 1)w = f.weight.detach()print

    4.8K21编辑于 2022-09-02
  • 来自专栏xiaosen

    张量的基础操作

    2, 3], [4, 5, 6]]) 张量索引操作 我们在操作张量时,经常需要去进行获取或者修改操作,掌握张量的花式索引操作是必须的一项能力。 1, 0], [6, 3, 8, 7, 3], [4, 9, 5, 3, 1]]) print(data[0]) print(data[:, 0]) # tensor([0, 7, 6, 5 这意味着你可以使用start:end:step的形式来获取张量的子集。例如,t[1:3]将返回张量t的第2到第3个元素。需要注意的是,步长step必须是正数,因为张量不支持负数步长。 import torch # 创建一个张量 t = torch.tensor([1, 2, 3, 4, 5]) # 范围索引 print(t[1:3]) # 输出 [2, 3] # 布尔索引 b 2到第3个元素。

    1.6K10编辑于 2024-03-24
  • 来自专栏合集

    Python|张量创建操作

    device:可选参数,返回张量的设备,默认使用当前设备。有cpu张量和cuda张量两种形式。 requires_grad:可选参数,bool。默认False,如果自动梯度会在返回的张量上记录操作。 默认False,只在cpu张量上有效。设置之后返回的张量会被分配到指定的内存。 3]) >>> t[0] = -1 >>> a array([-1, 2, 3]) >>> a = numpy.array([1, 2, 3]) 参数 input(Tensor):输入张量 size(tuples或ints):输出张量的形状 stride(tuple或ints):输出张量的步长 storage_offset(int,可选参数):输出张量在存储中的偏移 例子 >>> x = torch.randn(3, 3) >>> x tensor([[ 0.9039, 0.6291, 1.0795], [

    1.6K10发布于 2020-05-27
  • 来自专栏叶子陪你玩编程

    python连连看与记忆翻牌游戏(3

    上篇python连连看与记忆翻牌游戏(2)完成了界面,今天完成最后一篇算法与游戏结合,比较简单,这里简单讲讲。 最终效果: 之前的连接算法中,我们是通过一个矩阵来测试的。 ' '猫_1.png' '猫_1.png' '猫_4.png' '猫_6.png'] ['猫_5.png' '猫_1.png' '猫_5.png' '猫_7.png' '猫_2.png' '猫_3. png' '猫_5.png' '猫_6.png'] ['猫_7.png' '猫_6.png' '猫_3.png' '猫_4.png' '猫_2.png' '猫_1.png' '猫_5.png' '猫_8.png'] ['猫_2.png' '猫_8.png' '猫_2.png' '猫_3.png' '猫_3.png' '猫_8.png' '猫_7.png' '猫_8.png']] 接着将原来的算法作为一个模块

    1.1K20编辑于 2022-05-22
领券