tensor

深度理解tf.gather和tf.gather_nd的用法

不羁岁月 提交于 2020-02-28 19:14:08
tf.gather和tf.gather_nd都是从tensor中取出index标注的部分,不同之处在于,gather一般只使用一个index来标注,而gather_nd可以使用多个index。 例如: 如何直观理解gather_nd的indices呢? 在上例中,直观的理解就是,取出params中位于[0,0]和[1,1]处的tensor,放入index中对应的位置。 换句话说,除去tensor维之外,返回值的形状和indices相同,值由indices标注。 如果理解了这一点,就可以用gather_nd实现gather: 来源: CSDN 作者: iSikai 链接: https://blog.csdn.net/oksupersonic/article/details/104559821

paddle(一)

会有一股神秘感。 提交于 2020-02-28 04:24:39
一、概述 一个机器学习的框架,提供了深度学习需要的神经网络,激活函数等主要功能。 基础概念 Program 一次模型训练就是一个program,通过执行器执行,默认环境下是执行fluid.default_startup_program(),用户对计算的描述都将写入一段Program。Fluid 中的 Program 替代了传统框架中模型的概念,通过对顺序执行、条件选择和循环执行三种执行结构的支持,做到对任意复杂模型的描述。 import paddle.fluid as fluid import numpy as np data = fluid.layers.data(name="input8", shape=[-1, 32,32], dtype="float32") label = fluid.layers.data(name="label8", shape=[1], dtype="int") fc_out = fluid.layers.fc(input=data, size=2) predict = fluid.layers.softmax(input=fc_out) result=fluid.layers.auc(input=predict, label=label) place = fluid.CPUPlace() exe = fluid.Executor(place)

Pytorch中的自动求梯度机制和Variable类

梦想的初衷 提交于 2020-02-27 09:07:19
  自动求导机制是每一个深度学习框架中重要的性质,免去了手动计算导数,下面用代码介绍并举例说明Pytorch的自动求导机制。   首先介绍Variable,Variable是对Tensor的一个封装,操作和Tensor是一样的,但是每个Variable都有三个属性:Varibale的Tensor本身的.data,对应Tensor的梯度.grad,以及这个Variable是通过什么方式得到的.grad_fn,根据最新消息,在pytorch0.4更新后,torch和torch.autograd.Variable现在是同一类。torch.Tensor能像Variable那样追踪历史和反向传播。Variable仍能正确工作,但是返回的是Tensor。   我们拥抱这些新特性,看看Pytorch怎么进行自动求梯度。 1 #encoding:utf-8 2 import torch 3 4 x = torch.tensor([2.],requires_grad=True) #新建一个tensor,允许自动求梯度,这一项默认是false. 5 y = (x+2)**2 + 3 #y的表达式中包含x,因此y能进行自动求梯度 6 y.backward() 7 print(x.grad)   输出结果是: tensor([8.])   这里添加一个小知识点,即torch.Tensor和torch

学pytorch框架ing 2月26日

依然范特西╮ 提交于 2020-02-27 00:17:46
跟我一起学习pytorch吧?! 教程来自B站up主-迪哥有点愁 . / pycharm . sh #打开pycharm sudo chown 用户名 ~ / . bash_history #确认输入密码,以后每次新启动的终端都可以使用之前的历史命令 sudo su #输入密码,进入root ~ . / bash_history #在root下输入,可以查看此目录下开启的终端,输入命令的历史记录文件夹 学习目标 1.自动求导机制autograd 2.线性回归模型DEMO 3.常见tensor类型 4.Hub模块简介 5.气温数据集与任务介绍 6.按建模顺序完成网络架构 7.简化代码训练网络模型 8.分类任务概述 9.构建分类网络模型 10.DataSet模块介绍与应用方法 1. 线性回归模型 感谢大神的教程 加速conda install 的下载速度:一定要三行代码都输入啊啊啊啊啊啊!!!!威武我清华镜像!!!! conda config -- add channels https: / / mirrors . tuna . tsinghua . edu . cn / anaconda / pkgs / free / conda config -- add channels https: / / mirrors . tuna . tsinghua . edu . cn /

Expected object of backend CPU but got backend CUDA for argument #2 'weight' 报错的问题和解决办法

╄→гoц情女王★ 提交于 2020-02-26 11:57:18
点这里参见原文 PyTorch代码调试利器TorchSnooper: 自动print每行代码的Tensor信息 用于 PyTorch 代码的实用工具 TorchSnooper。作者是TorchSnooper的作者,也是PyTorch开发者之一。 GitHub 项目地址: https://github.com/zasdfgbnm/TorchSnooper 大家可能遇到这样子的困扰:比如说运行自己编写的 PyTorch 代码的时候,PyTorch 提示你说数据类型不匹配,需要一个 double 的 tensor 但是你给的却是 float;再或者就是需要一个 CUDA tensor, 你给的却是个 CPU tensor。比如下面这种: Expected object of backend CPU but got backend CUDA for argument #2 ‘weight’ 这种问题调试起来很麻烦,因为你不知道从哪里开始出问题的。比如你可能在代码的第三行用 torch.zeros 新建了一个 CPU tensor, 然后这个 tensor 进行了若干运算,全是在 CPU 上进行的,一直没有报错,直到第十行需要跟你作为输入传进来的 CUDA tensor 进行运算的时候,才报错。要调试这种错误,有时候就不得不一行行地手写 print 语句,非常麻烦。 再或者

第一节,TensorFlow基本用法

邮差的信 提交于 2020-02-24 06:10:20
在第一节中我们已经介绍了一些TensorFlow的编程技巧; 第一节,TensorFlow基本用法 ,但是内容过于偏少,对于TensorFlow的讲解并不多,这一节对之前的内容进行补充,并更加深入了解讲解TensorFlow. TesorFlow的命名来源于本身的运行原理。Tensor(张量)意味着N维数组,Flow(流)意味着基于数据流图的计算。TensorFlow是张量从图像的一端流动到另一端的计算过程,这也是TensorFlow的编程模型。 TensorFlow编程基础上主要介绍session的创建,以及session与图的交互机制,最后讲解一下在session中指定GPU运算资源。 一 运行机制 TensorFlow的运行机制属于"定义"与”运行“相分离。从操作层面可以抽象成两种:构造模型和模型运行。 在讲解构建模型之前,需要讲解几个概念。在一个叫做"图"的容器中包括: 张量(tensor):TensorFlow程序使用tensor数据结构来代表所有的数据,计算图中,操作间传递的数据都是tensor,你可以把TensorFlow tensor看做一个n维的数组或者列表。 变量(Variable):常用于定义模型中的参数,是通过不断训练得到的值。比如权重和偏置。 占位符(placeholder):输入变量的载体。也可以理解成定义函数时的参数。 图中的节点操作(op)

关于python列表的索引的相关用法

☆樱花仙子☆ 提交于 2020-02-23 15:27:39
先看如下代码: from torch . nn import functional as F import torch import torch . autograd as autograd input = torch . Tensor ( [ [ - 0.0763 , 0.3447 , - 0.1181 ] , [ 2.0828 , 0.5774 , 0.6320 ] , [ 0.1 , 0.2 , 0.3 ] ] ) print ( input ) output = F . log_softmax ( input , dim = 1 ) #每一维的索引单独用一个中括号的情况 print ( output ) """ #tensor([[-1.2478, -0.8268, -1.2896], [-0.3759, -1.8813, -1.8267], [-1.2019, -1.1019, -1.0019]] ) """ print ( output [ range ( 3 ) ] [ 0 ] ) #tensor([-1.2478, -0.8268, -1.2896]) print ( output [ 0 ] [ range ( 3 ) ] ) #tensor([-1.2478, -0.8268, -1.2896]) print ( output [ range ( 3 ) ] [

一、Tensorflow新手入门

时光毁灭记忆、已成空白 提交于 2020-02-23 12:59:43
1、MacOS Tensorflow(CPU版本)下载和安装 pip3 install tensorflow 2、Tensorflow的基本用法 使用图(graph)来表示计算任务 在回话(Session)的上下文(context)中执行图 使用tensor表示数据 通过变量(Variable)维护状态 使用feed和fetch可以为任意的操作赋值或者从中获取数据   综述:Tensorflow图中的节点称为op(operation),一个op获得o个或者多个tensor(数据)来执行计算,产生0个或者多个tensor(数据),每个tensor是一个类型化的多维数组   计算图:Tensorflow程序通常分为构建阶段和执行阶段,构建阶段:op的执行步骤被描述成一个图,执行阶段:使用回话执行图中的op   构建图:构建图的第一步是创建源op(源op不需要任何输入,如常量Constant),源op的输出被传递给其它op做运算。Tensorflow Python库有一个默认图,op构造器可以为图增加节点 import tensorflow as tf # 创建一个常量op(节点),产生一个1X2矩阵 # 添加到默认图中 # 构造器的返回值代表该常量的op的返回值 matrix1 = tf.constant([[3., 3.]]) # 创建一个常量op(节点),产生一个2X1矩阵

Stacking copies of an array/ a torch tensor efficiently?

此生再无相见时 提交于 2020-02-23 07:12:30
问题 I'm a Python/Pytorch user. First, in numpy, let's say I have an array M of size LxL, and i want to have the following array: A=(M,...,M) of size, say, NxLxL, is there a more elegant/memory efficient way of doing it than : A=np.array([M]*N) ? Same question with torch tensor ! Cause, Now, if M is a Variable(torch.tensor), i have to do: A=torch.autograd.Variable(torch.tensor(np.array([M]*N))) which is ugly ! 回答1: Note, that you need to decide whether you would like to allocate new memory for

Pytorch Logistic回归

本小妞迷上赌 提交于 2020-02-22 23:04:59
参考《深度学习入门之Pytorch》 Logistic回归实现二分类问题 数据下载链接: data(提取码:q8gd) 1. 首先读取 数据 data.txt #logistic回归 #读取data.txt import matplotlib.pyplot as plt with open('data.txt','r') as f: data_list = f.readlines() data_list = [i.split('\n')[0] for i in data_list] data_list = [i.split(',') for i in data_list] data = [(float(i[0]),float(i[1]),float(i[2])) for i in data_list] #q前两个数据表示X,Y坐标,最后一个数据表示类别 打开data.txt,前两个数据是横纵坐标,最后一个是类别0,1。这个数据有两个属性一个类别。 接着把数据按类别不同画出来。 x0 = list(filter(lambda x: x[-1]==0.,data)) #filter去除不符合条件的,保留符合条件的数据 x1 = list(filter(lambda x: x[-1]==1.,data))#数据按类别筛选 plot_x0_x = [i[0] for i in x0]