tensor

pytorch 自动求梯度

守給你的承諾、 提交于 2020-02-22 22:41:32
自动求梯度 在深度学习中,我们经常需要对函数求梯度(gradient)。PyTorch提供的 autograd 包能够根据输入和前向传播过程自动构建计算图,并执行反向传播。本节将介绍如何使用autograd包来进行自动求梯度的有关操作。 概念 上一节介绍的 Tensor 是这个包的核心类,如果将其属性 .requires_grad 设置为 True ,它将开始追踪(track)在其上的所有操作(这样就可以利用链式法则进行梯度传播了)。完成计算后,可以调用 .backward() 来完成所有梯度计算。此 Tensor 的梯度将累积到 .grad 属性中。 注意在 y.backward() 时,如果 y 是标量,则不需要为 backward() 传入任何参数;否则,需要传入一个与 y 同形的 Tensor 。 如果不想要被继续追踪,可以调用 .detach() 将其从追踪记录中分离出来,这样就可以防止将来的计算被追踪,这样梯度就传不过去了。此外,还可以用 with torch.no_grad() 将不想被追踪的操作代码块包裹起来,这种方法在评估模型的时候很常用,因为在评估模型时,我们并不需要计算可训练参数( requires_grad=True )的梯度。 Function 是另外一个很重要的类。 Tensor 和 Function 互相结合就可以构建一个记录有整个计算过程的有向无环图

pytorch中的Autograd(自动微分)

白昼怎懂夜的黑 提交于 2020-02-21 18:50:41
Autograd主要实现反向传播求导数,避免手动计算导数的复杂过程 1. autograd.Variable是Autograd中的核心类,它是Tensor的简单封装,并支持Tensor的所有操作。Tensor在被封装为Variable之后,可以调用它的 .backward() 实现反向传播,自动计算所有梯度。 例如: import torch as t import numpy as np from torch.autograd import Variable x=Variable(t.ones(2,2),requires_grad=True) #Variable对Tensor的封装 print(x) #输出 tensor([[1., 1.], [1., 1.]], requires_grad=True) 2. Variable主要包含三个属性: data :保存Variable所包含的Tensor grad:保存data的梯度,grad也是个Variable,而不是Tensor,它和data的形状一样 grad_fn:指向一个Function对象,这个Function对象用来反向转播计算输入的梯度 例如: x=Variable(t.ones(2,2),requires_grad=True) # print(x) y=x.sum() y.backward() #反向传播,计算梯度

pytorch随笔

笑着哭i 提交于 2020-02-21 17:39:30
1. torch.from_numpy() 作用:将numpy数组转换成torch张量; 具体形式:torch.form_numpy(data); 2. data[].numpy() 作用:将张量转换为numpy数组; 形式:data[].numpy() 3. plt.imshow() 作用:plt.imshow()函数负责对图像进行处理,并显示其格式,但是不能显示; 形式:plt.imshow(image) 4. plt.show() 作用:将plt.imshow()处理后的函数显示出来; 形式:plt.show() 5. torch.add() 作用:张量相加; 形式:torch.add(a,b),也可以是c=a.add(b); 注意,a.add_(b)相当于自加,即a+b得到的值存储在a中。 6. torch.mul() 作用:张量相乘; 形式:torch.mul(a,b),也可以是c=a.mul(b); 注意,a.mul(b)相当于和自身相乘,得到的值存储在啊中。 7. torch.matmul() 作用:矩阵点积,矩阵之间行和列的关系在计算时需要注意; 形式:torch.matmul(a,b)或者a.matmul(b); 8. cuda() 作用:将张量转移到GPU; 形式:a=a.cuda() 9. Variable对象 torch.autograd

1、TensorFlow简介

大兔子大兔子 提交于 2020-02-19 01:58:15
参考: http://www.tensorfly.cn/tfdoc/get_started/basic_usage.html 1、用TensorFlow构造一个简单的线性拟合: 1 # -*- coding: UTF-8 -*- 2 # date:2018/6/14 3 # User:WangHong 4 import tensorflow as tf 5 import numpy as np 6 7 #使用Numpy生成假数据(phony data),为2维每维100个点 8 x_data = np.float32(np.random.rand(2,100)) 9 #生成Y的点,np.dot为矩阵的乘法, 10 y_data = np.dot([0.100,0.200],x_data)+0.300 11 12 #构造一个线性模型 13 14 #tf.Variable为TensorFlow里定义变量的方法,tf.zeros([1])为初始化为0的一个一行一列变量 15 b = tf.Variable(tf.zeros([1])) 16 #定义一个变量,随机的生成一个一行两列的变量,范围在-1到1之间 17 w = tf.Variable(tf.random_uniform([1,2],-1.0,1.0)) 18 #设置y的值 19 y = tf.matmul(w,x_data)+b

动手学深度学习第六课:循环神经网络基础

ぃ、小莉子 提交于 2020-02-15 08:49:24
循环神经网络 以循环神经网络实现语言模型为例。 下面分析构造。假设 X t ∈ R n × d X_t\in\mathbb{R}^{n\times d} X t ​ ∈ R n × d 是时间步 t t t 的小批量输入, H t ∈ R n × h H_t\in\mathbb{R}^{n\times h} H t ​ ∈ R n × h 是该时间步的隐藏变量,则 H t = Φ ( X t W x h + H t − 1 W h h + b h ) . H_t = \Phi(X_tW_{xh}+H_{t-1}W_{hh}+b_h). H t ​ = Φ ( X t ​ W x h ​ + H t − 1 ​ W h h ​ + b h ​ ) . 对于每一个字符和每一个隐藏变量都用一个向量来表示,这里的 d d d 和 h h h 分别表示两个向量的长度。 W x h ∈ d × h , W h h ∈ R h × h , b ∈ R 1 × h W_{xh}\in\mathbb{d\times h}, W_{hh}\in\mathbb{R}^{h\times h},b\in\mathbb{R}^{1\times h} W x h ​ ∈ d × h , W h h ​ ∈ R h × h , b ∈ R 1 × h ,由此知 X t W x h ∈ R n × h , H t

动手学深度学习之线性回归

蹲街弑〆低调 提交于 2020-02-15 08:48:56
1. 线性回归基本要素 1.1 模型 所谓模型,即 两种或两种以上变量间相互依赖的定量关系 。例如:房价受其面积、地段与房龄等因素的制约 1.2 数据集 为了对某现象进行预测,需要已知该现象在一段时间内的确切数据。以期在该数据基础上面寻找模型参数来使模型的预测值与真实值的误差最小。在机器学习术语里,该数据集被称为 训练数据集(training data set) 或 训练集(training set) ,其中个体被称为 样本(sample) ,其真实值称为 标签(label) ,用来预测标签的因素称为 特征(feature) 。特征用于表征样本的特点。 1.3 损失函数 在模型训练中,需要衡量预测值与真实值之间的误差。通常会选取一个非负数作为误差,其数值越小表示误差越小。一个常用的选择是 平方函数 。 1.4 优化函数 当模型和损失函数形式较为简单时, 误差最小化 问题的解可以直接用公式表达出来,这类解称为 解析解(analytical solution) 。本节使用的线性回归和平方误差刚好属于这个范畴。然而,大多数深度学习模型并没有解析解,只能通过优化算法有限次迭代模型参数来尽可能降低损失函数的值,这类解称为 数值解(numerical solution) 。在求数值解的优化算法中, 小批量随机梯度下降 (mini-batch stochastic gradient

Deep_Learning_Task1: Linear_Regression/Softmax/MLP

♀尐吖头ヾ 提交于 2020-02-15 08:37:07
一 、Linear_Regression 1_线性回归的基本要素 模型 (model) 数据集 (data set):训练数据集(training data set) and 训练集(training set) 损失函数 (price function):用来衡量损失值和真实值的误差,数值越小代表误差越小 优化函数_随机梯度下降 (optimical function_random gradient descent) 在模型和损失函数形式较为简单时,上面的误差最小化问题的解可以直接被公式表达出来,这类解叫做解析解(analytical solution) 大多数深度学习的模型并没有解析解,只能通过优化算法有限次迭代模型参数来尽可能降低损失函数的值,这类解叫做数值解(numerical solution) 小批量随机梯度下降(mini-batch stochastic gradient descent)—— 求解数值解的优化算法: step1:选取一组模型参数的初始值 step2:对参数进行多次迭代,使每次迭代都降低损失函数的值 step3:在每次迭代的过程中,先随机均匀采样一个由固定数目训练数据样本所组成的小批量 step4:求小批量中数据样本的平均损失有关模型参数的导数(梯度descent) step5:用此结果与预先设定的一个正数的乘机作为模型参数在本次迭代的减小量

task1

丶灬走出姿态 提交于 2020-02-15 07:51:07
以下代码可直接运行,注意注释 从零实现线性回归 import torch as t from matplotlib import pyplot as plt import numpy as np import random num_input = 2 num_example = 1000 true_w = [2,-3.4] true_b = 4.2 features = t.randn(num_example,num_input,dtype = t.float32) labels = true_w[0]*features[:,0]+true_w[1]*features[:,1]+true_b # labels也是一个tensor labels += t.tensor(np.random.normal(0,0.01,size=labels.size())) # plt.scatter(feature[:,0].numpy(),labels.numpy(),1) # 参数为x,y。1表示点的大小。 # plt.scatter(feature[:,1].numpy(),labels.numpy(),1) # plt.show() def data_iter(batch_size,features,labels): num_examples = len(features) indices

线性回归-pytorch

我的梦境 提交于 2020-02-15 00:28:55
线性回归 主要内容包括: 线性回归的基本要素 线性回归模型从零开始的实现 线性回归模型使用pytorch的简洁实现 线性回归的基本要素 模型 为了简单起见,这里我们假设价格只取决于房屋状况的两个因素,即面积(平方米)和房龄(年)。接下来我们希望探索价格与这两个因素的具体关系。线性回归假设输出与各个输入之间是线性关系: p r i c e = w a r e a ⋅ a r e a + w a g e ⋅ a g e + b \mathrm{price} = w_{\mathrm{area}} \cdot \mathrm{area} + w_{\mathrm{age}} \cdot \mathrm{age} + b p r i c e = w a r e a ​ ⋅ a r e a + w a g e ​ ⋅ a g e + b 数据集 我们通常收集一系列的真实数据,例如多栋房屋的真实售出价格和它们对应的面积和房龄。我们希望在这个数据上面寻找模型参数来使模型的预测价格与真实价格的误差最小。在机器学习术语里,该数据集被称为训练数据集(training data set)或训练集(training set),一栋房屋被称为一个样本(sample),其真实售出价格叫作标签(label),用来预测标签的两个因素叫作特征(feature)。特征用来表征样本的特点。 损失函数 在模型训练中

Pytorch 中的张量系统:Tensor

生来就可爱ヽ(ⅴ<●) 提交于 2020-02-14 22:57:24
文章目录 一、Torch 简介 1、Torch 最重要的特点及功能 2、Torch 与 Numpy 的区别与联系 二、Tensor 使用 1. tensor 的创建 2. tensor 的访问 3. tensor 的常用属性和方法 `a、常用属性` `b、常用方法` 4. tensor 的常用函数 a、数组随机打乱、选择 b、数组组合 c、数组分割 d、数组复制 5、tensor 的内存结构 三、通用函数(ufunc): 元素级运算 1. 常用的通用函数 2. 常用的统计方法 一、Torch 简介 1、Torch 最重要的特点及功能 N 维数组对象(tensor) :该对象是存储单一数据类型的多维数组(可表示标量、向量、矩阵或张量等) 具有 矢量运算和复杂广播能力 ,内存使用效率高 具有 线性代数、随机数生成以及傅里叶变换功能 2、Torch 与 Numpy 的区别与联系 Numpy 定位是各种各样的 科学计算 ,其在 CPU 上比较快 TF 和 Torch 等的定位是 机器学习 ,它们在 Numpy 的基础上做了扩展,使其支持 GPU 编程、分布式编程、自动微分 等特性 torch==numpy, tensor==ndarray :torch is a Tensor library like NumPy, with strong GPU support 二、Tensor 使用 1