• PyTorch之Variable


    #!/usr/bin/env python2
    # -*- coding: utf-8 -*-
    
    import torch
    from torch.autograd import Variable
    
    tensor = torch.FloatTensor([[1, 2],[3, 4]])
    #在BP的时候,pytorch是将Variable的梯度放在Variable对象中的,
    # 我们随时都可以使用Variable.grad得到对应Variable的grad。
    # 刚创建Variable的时候,它的grad属性是初始化为0.0的。
    #需要求导的话,requires_grad=True属性是必须的。
    variable = Variable(tensor, requires_grad = True)
    print tensor
    """
    output:
     1  2
     3  4
    [torch.FloatTensor of size 2x2]
    """
    #多了一个Variable containing:
    print variable
    """
    output:
    Variable containing:
     1  2
     3  4
    [torch.FloatTensor of size 2x2]
    """
    
    #对比tensor的计算和variable的计算
    t_out = torch.mean(tensor*tensor)
    v_out = torch.mean(variable*variable)
    
    print t_out
    """
    7.5
    """
    print v_out
    """
    Variable containing:
     7.5000
     [torch.FloatTensor of size 1]
    """
    
    #模拟v_out 反向误差
    # v_out = 1/4 * sum(variable*variable) 这是计算图中的 v_out 计算步骤
    # 针对于 v_out 的梯度就是, d(v_out)/d(variable) = 1/4*2*variable = variable/2
    v_out.backward()
    
    print variable.grad
    
    #获取variable的数据
    print variable
    """
    Variable containing:
     1  2
     3  4
    [torch.FloatTensor of size 2x2]
    """
    print variable.data
    """
     1  2
     3  4
    [torch.FloatTensor of size 2x2]
    """
    print variable.data.numpy()
    """
    [[ 1.  2.]
     [ 3.  4.]]
     """
  • 相关阅读:
    innerHTML,outerHTML,innerText,outerText
    vue生命周期
    vue属性监听
    vue计算属性(通过计算得来的属性)
    express脚手架的安装,以及ejs的语法
    mongoose的基本操作方法
    vue的基本指令
    MongoDB
    五分钟让你拥有自己的聊天室
    带你了解世界最先进的手势识别技术 -- 微软,凌感,Leap...
  • 原文地址:https://www.cnblogs.com/xmeo/p/7260548.html
Copyright © 2020-2023  润新知