【计算图&自动微分】例题代码

PyTorch Basics: Understanding Autograd and Computation Graphs (paperspace.com)

import torch

w1 = torch.randn(1, requires_grad=True)
w2 = torch.randn(1, requires_grad=True)
w3 = torch.randn(1, requires_grad=True)
w4 = torch.randn(1, requires_grad=True)

a = torch.tensor(1.)
print("a = ", a.data)
print("w = ", w1.data, w2.data, w3.data, w4.data)
b = w1 * a
c = w2 * a
d = w3 * b + w4 * c  # compute graph
print("d = ", d.data)
L = (10 - d).sum()  # Loss function
print("L = ", L.data)
L.backward()        # Back propagate

print("grad : ",w1.grad, w2.grad, w3.grad, w4.grad)
learning_rate = 1
w1.data = w1.data - learning_rate * w1.grad.data
w2.data = w2.data - learning_rate * w2.grad.data
w3.data = w3.data - learning_rate * w3.grad.data
w4.data = w4.data - learning_rate * w4.grad.data
print("w new = ", w1.data, w2.data, w3.data, w4.data)

 

# calculate: y = 1 / (exp( —( w * x + b )) + 1 )
# x = 1,w = 0,b = 0

import math
import torch
x = torch.tensor(1., requires_grad=True)
w = torch.tensor(0., requires_grad=True)
b = torch.tensor(0., requires_grad=True)
h1 = w * x
h2 = h1 + b
h3 = h2 * (-1)
# h4 = math.exp(h3) # 会将Tensor类型转换为float
h4 = torch.exp(h3)
h5 = h4 + 1
h6 = 1 / h5
y = h6
y.backward()
print(f'grad of x: {x.grad}')
print(f'grad of w: {w.grad}')
print(f'grad of b: {b.grad}')

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
今年的华为开发者大会 HDC 2020 上,除了**昇腾、鲲鹏等自研芯片硬件平台**之外,最令人期待的就是**深度学习框架 MindSpore 的开源**了。今天上午,华为 MindSpore **首席科学家陈雷**在活动中宣布这款产品正式开源,我们终于可以在开放平台上一睹它的真面目。 本文是根据机器之心报道的MindSpore 的开源介绍而整理的.md笔记 作为一款支持**端、边、云独立/协同的统一训练和推理框架,华为希望通过这款完整的软件堆栈,实现**一次性算子开发、一致的开发和调试体验**,以此帮助开发者实现**一次开发,应用在所有设备上平滑迁移**的能力。 三大创新能力:新编程范式,执行模式和协作方式 由**自动微分自动并行、数据处理**等功能构成 开发算法即代码、运行高效、部署态灵活**的**特点**, 三层核心:从下往上分别是**后端运行时、计算引擎及前端表示层**。 最大特点:采用了业界最新的 **Source-to-Source 自动微分**,它能**利用编译器及编程语言的底层技术**,进一步**优化以支持更好的微分表达**。主流深度学习框架中主要有**三种自动微分技术,才用的不是静态计算、动态计算,而是基于**源码**转换:该技术源以**函数式编程框架**为基础,以**即时编译(JIT)**的方式**在<u>中间表达</u>(编译过程中程序的表达形式)上做自动微分变换**,支持**<u>复杂控制流场景、高阶函数和闭包</u>**。 MindSpore 主要概念就是张量、算子、单元和模型 其代码有两个比较突出的亮点:计算的调整,动态与静态可以一行代码切换;自动并行特性,我们写的串行代码,只需要多加一行就能完成自动并行。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值