tensor

torch.ge()函数解读

你离开我真会死。 提交于 2019-11-29 11:22:09
函数作用 torch.ge(a,b)比较a,b的大小,a为张量,b可以为和a相同形状的张量,也可以为一个常数。 代码示例 >>> import torch >>> a=torch.Tensor([[1,2,3],[4,5,6]]) >>> a tensor([[1., 2., 3.], [4., 5., 6.]]) >>> b=torch.Tensor([[2,2,2],[4,5,7]]) >>> b tensor([[2., 2., 2.], [4., 5., 7.]]) >>> torch.ge(a,b) #逐个元素比较 tensor([[0, 1, 1], [1, 1, 0]], dtype=torch.uint8) >>> c=torch.randn(4,4) >>> c tensor([[ 0.3021, 0.5238, -1.2107, 1.3706], [-0.0715, -0.1180, 0.2854, 0.2061], [ 0.7414, 0.2233, -0.4926, -0.6218], [-0.0471, 1.1931, 0.8465, -0.5087]]) >>> d=torch.randn(4,4) >>> d tensor([[-1.9698, 1.8576, 0.2773, 0.6412], [ 1.0153, 0.5828, 0.8718, -0

Tensorflow - tf常用函数使用(持续更新中)

天大地大妈咪最大 提交于 2019-11-29 05:01:35
本人较懒,故间断更新下常用的tf函数以供参考: 一: tf.reduce_sum( ) reduce_sum( ) 个人理解是降维求和函数,在 tensorflow 里面,计算的都是 tensor,可以通过调整 axis 的维度来控制求和维度。 参数: input_tensor:要减少的张量.应该有数字类型. axis:要减小的尺寸.如果为None(默认),则缩小所有尺寸.必须在范围[-rank(input_tensor), rank(input_tensor))内. keep_dims:如果为true,则保留长度为1的缩小尺寸. name:操作的名称(可选). reduction_indices:axis的废弃的名称. 返回: 该函数返回减少的张量. numpy兼容性 相当于np.sum; 此处axis为tensor的阶数,使用该函数将消除tensor指定的阶axis,同时将该阶下的所有的元素进行累积求和操作。 看一个官方示例: x = tf.constant([[1, 1, 1], [1, 1, 1]]) tf.reduce_sum(x) # 6 tf.reduce_sum(x, 0) # [2, 2, 2] tf.reduce_sum(x, 1) # [3, 3] tf.reduce_sum(x, 1, keep_dims=True) # [[3], [3]] tf

张量操作

不想你离开。 提交于 2019-11-29 04:34:22
张量操作 在tensorflow中,有很多操作张量的函数,有生成张量、创建随机张量、张量类型与形状变换和张量的切片与运算 生成张量 固定值张量 tf.zeros(shape, dtype=tf.float32, name=None) 创建所有元素设置为零的张量。此操作返回一个dtype具有形状shape和所有元素设置为零的类型的张量。 tf.zeros_like(tensor, dtype=None, name=None) 给tensor定单张量(),此操作返回tensor与所有元素设置为零相同的类型和形状的张量。 tf.ones(shape, dtype=tf.float32, name=None) 创建一个所有元素设置为1的张量。此操作返回一个类型的张量,dtype形状shape和所有元素设置为1。 tf.ones_like(tensor, dtype=None, name=None) 给tensor定单张量(),此操作返回tensor与所有元素设置为1 相同的类型和形状的张量。 tf.fill(dims, value, name=None) 创建一个填充了标量值的张量。此操作创建一个张量的形状dims并填充它value。 tf.constant(value, dtype=None, shape=None, name='Const') 创建一个常数张量。 用常数张量作为例子

张量排序

纵饮孤独 提交于 2019-11-29 04:32:38
目录 Outline Sort/argsort 一维 二维 Top_k Top_one Top-k accuracy 示例 Outline Sort/argsort Topk Top-5 Acc. Sort/argsort 一维 import tensorflow as tf a = tf.random.shuffle(tf.range(5)) a <tf.Tensor: id=59, shape=(5,), dtype=int32, numpy=array([4, 0, 3, 2, 1], dtype=int32)> tf.sort(a, direction='DESCENDING') <tf.Tensor: id=69, shape=(5,), dtype=int32, numpy=array([4, 3, 2, 1, 0], dtype=int32)> # 返回索引 tf.argsort(a, direction='DESCENDING') <tf.Tensor: id=81, shape=(5,), dtype=int32, numpy=array([0, 2, 3, 4, 1], dtype=int32)> idx = tf.argsort(a, direction='DESCENDING') tf.gather(a, idx) <tf.Tensor: id=94,

How to convert Pytorch autograd.Variable to Numpy?

冷暖自知 提交于 2019-11-29 03:03:19
问题 The title says it all. I want to convert a PyTorch autograd.Variable to its equivalent numpy array. In their official documentation they advocated using a.numpy() to get the equivalent numpy array (for PyTorch tensor ). But this gives me the following error: Traceback (most recent call last): File "stdin", line 1, in module File "/home/bishwajit/anaconda3/lib/python3.6/site-packages/torch/autograd/variable.py", line 63, in getattr raise AttributeError(name) AttributeError: numpy Is there any

tensorflow layout optimizer && conv autotune

ⅰ亾dé卋堺 提交于 2019-11-29 02:23:17
1.Layout Optimizer   Tensorflow有几种图优化的方法,其中一种较为重要的是layout optimizer,核心思想是调整tensor的layout(NHWC to NCHW),原因在于在较早的cudnn版本中的API是不支持NHWC格式的输入的,目前cudnn7.0版本已经能支持NHWC格式输入了,但经过实测发现以NHWC格式为输入调用cudnn API的速度是不如NCHW的(在k80上实测,lenet-5的两个卷积层,使用NHWC计算需要平均约2.5ms,使用NCHW只需要1.8ms),所以Tensorflow layout的作用就是将NHWC转换为NCHW,从而加速网络的计算速度。   在使用layout转换的时候,Tensorflow会监测网络的结构,如果发现存在调用cudnn计算的节点,就会在节点前加一个transpose,将tensor转换为NCHW格式,然后经过所有由cudnn计算的节点及计算方式与layout无关的节点(比如relu的计算就与layout无关,但是reduce_mean就与layout有关)之后,再加一个transpose将tensor转换回来。以resnet_v2为例: https://github.com/tensorpack/tensorpack/blob/master/examples/ResNet/cifar10

pytorch的backward

◇◆丶佛笑我妖孽 提交于 2019-11-29 00:19:09
在学习的过程中遇见了一个问题,就是当使用backward()反向传播时传入参数的问题: net.zero_grad() #所有参数的梯度清零 output.backward(Variable(t.ones(1, 10))) #反向传播 这里的backward()中为什么需要传入参数Variable(t.ones(1, 10))呢?没有传入就会报错: RuntimeError: grad can be implicitly created only for scalar outputs 这个错误的意思就是梯度只能为标量(即一个数)输出隐式地创建 比如有一个例子是: 1) #使用Tensor新建一个Variable x = Variable(t.ones(2, 2),requires_grad = True) x 返回: tensor([[1., 1.], [1., 1.]], requires_grad=True) 此时查看该值的grad和grad_fn是没有返回值的,因为没有进行任何操作 x.grad_fn x.grad 进行求和操作,查看梯度 y = x.sum() y 返回: tensor(4., grad_fn=<SumBackward0>) 这时候可查看: y.grad_fn 返回: <SumBackward0 at 0x122782978> 可知y是变量Variable

Pytorch - GPU ID 指定 pytorch gpu 指定

拈花ヽ惹草 提交于 2019-11-29 00:12:11
PyTorch 关于多 GPUs 时的指定使用特定 GPU. PyTorch 中的 Tensor,Variable 和 nn.Module(如 loss,layer和容器 Sequential) 等可以分别使用 CPU 和 GPU 版本,均是采用 .cuda() 方法. 如: import torch a = torch.Tensor(2, 3) if torch.cuda.is_available(): # 判断是否支持 CUDA a.is_cuda # False a = a.cuda() # 放到 GPU 上 a.is_cuda # True a.get_device() # 默认使用 GPU-0 采用 .cuda() 方法默认使用的是 GPU-0,等价于 .cuda(0) . 1. GPU ID 指定 当需要指定使用多张 GPUs 中的特定 GPU 时,可以采用 .cuda(1) 方法,但需要对大量的 Tensor、Variable等进行修改. 参考网络上的方法,替代方案主要有: [1] - 使用 torch.cuda.set_device(id) 函数 import torch torch.cuda.set_device(id) # id=0, 1, 2 等 [2] - 采用类似 Tensorflow 指定 GPU 的方式,使用 CUDA_VISIBLE_DEVICES

TensorFlow2.0教程7:AutoGraph

喜你入骨 提交于 2019-11-28 22:19:57
  tf.function的一个很酷的新功能是AutoGraph,它允许使用自然的Python语法编写图形代码。   1.tf.function装饰器   当使用tf.function注释函数时,可以像调用任何其他函数一样调用它。   它将被编译成图,这意味着可以获得更快执行,更好地在GPU或TPU上运行或导出到SavedModel。   @tf.function   def simple_nn_layer(x, y):   return tf.nn.relu(tf.matmul(x, y))   x = tf.random.uniform((3, 3))   y = tf.random.uniform((3, 3))   simple_nn_layer(x, y)   array([[0.75023645, 0.19047515, 0.10737072],   [1.1521267 , 0.49491584, 0.19416495],   [0.5541876 , 0.24642248, 0.09543521]], dtype=float32)>   如果我们检查注释的结果,我们可以看到它是一个特殊的可调用函数,它处理与TensorFlow运行时的所有交互。   simple_nn_layer   如果代码使用多个函数,则无需对它们进行全部注释  

pytorch学习-WHAT IS PYTORCH

五迷三道 提交于 2019-11-28 21:06:18
参考:https://pytorch.org/tutorials/beginner/blitz/tensor_tutorial.html#sphx-glr-beginner-blitz-tensor-tutorial-py WHAT IS PYTORCH 这是一个基于python的实现两种功能的科学计算包: 用于替换NumPy去使用GPUs的算力 一个提供了最大化灵活度和速度的深度学习搜索平台 Getting Started Tensors Tensors与NumPy的ndarrays相似,不同在于Tensors能够使用在GPU上去加速计算能力 from __future__ import print_function import torch 构造一个5*3的矩阵,不初始化 x = torch.empty(5, 3) print(x) 输出: (deeplearning) userdeMBP:pytorch user$ python test.py tensor([[ 0.0000e+00, -2.5244e-29, 0.0000e+00], [-2.5244e-29, 1.9618e-44, 9.2196e-41], [ 0.0000e+00, 7.7050e+31, 0.0000e+00], [ 0.0000e+00, 0.0000e+00, 0.0000e+00], [ 0