头歌之动手学人工智能-Pytorch 之autograd

目录

第1关:Variable

任务描述

编程要求

测试说明

没有伟大的愿望,就没有伟大的天才。——巴尔扎克开始你的任务吧,祝你成功!

第2关:Variable 属性

任务描述

编程要求

测试说明

真正的科学家应当是个幻想家;谁不是幻想家,谁就只能把自己称为实践家。 —— 巴尔扎克开始你的任务吧,祝你成功!

第3关:梯度初探

任务描述

编程要求

测试说明

科学的界限就像地平线一样:你越接近它,它挪得越远。——布莱希特开始你的任务吧,祝你成功!

第4关:梯度进阶

任务描述

编程要求

测试说明

真正的科学家应当是个幻想家;谁不是幻想家,谁就只能把自己称为实践家。 —— 巴尔扎克开始你的任务吧,祝你成功!


第1关:Variable

恭喜大家进入  Pytorch 最为核心的学习——autograd,这是  Pytorch 中区别其他机器学习库的一个重要元素。准备好了吗?让我们一探它的庐山真面目吧!

  • 任务描述

本关任务:本关提供了一个张量变量tensor ,根据所给的张量创建 Variable 变量v,同时要求同学们掌握 Variable 的相关属性,例如如何获得 Variable 的 data 属性。

  • 编程要求

本关涉及的代码文件为 createVariable.py,本次编程任务是补全右侧代码片段中 Begin 至 End 中间的代码,具体要求如下:

根据所给的张量创建 Variable 变量 v。
具体请参见后续测试样例。

  • 测试说明

本关涉及的测试文件为 createVariable.py ,运行用户填写后的程序判断正误。

根据程序的输出判断程序是否正确,若正确则输出下面的预期输出,否则报错。

请注意输出格式及规范。

以下是测试样例:

测试输入:
预期输出:
Variable containing:
 1  4  2
 3  1  4
[torch.FloatTensor of size 2x3]

没有伟大的愿望,就没有伟大的天才。——巴尔扎克
开始你的任务吧,祝你成功!
import torch
from torch.autograd import Variable
tensor = torch.FloatTensor([[1,4,2],[3,1,4]])#/********** Begin *********/
v = Variable(tensor,requires_grad=True)
#/********** End *********/
print(v)

第2关:Variable 属性

本关将介绍 Variable 属性方面的知识,让同学们对其更加熟悉,便于掌握。

  • 任务描述

本关要求掌握Variable 的基本属性及其意义,如requires_grad属性标记着该Variable 是否需要求导。

本关任务:本关提供了一个32位浮点型的张量 x,要求同学们根据 x创建一个Variable类型的变量 y, y是由 x 的平方计算得到,并输出y的Requires Gradiet属性和Gradient属性。

  • 编程要求

本关涉及的代码文件为attributes.py,本次的编程任务是补全右侧代码片段中Begin至End中间的代码,具体要求如下:

创建一个变量  y,由  x 的平方计算得到,并输出;

输出 y 的Requires Gradient属性;

输出 y 的Gradient属性。

具体请参见后续测试样例。

  • 测试说明

测试过程:

本关涉及的测试文件为attributes.py,运行用户填写后的程序判断正误。

根据程序的输出判断程序是否正确,若正确则输出下面的预期输出,否则报错。

请注意输出格式及规范。

以下是测试样例:

测试输入:
预期输出:

Variable containing:
 1
 4
 9
[torch.FloatTensor of size 3]

Requires Gradient : True 
Gradient : None 

真正的科学家应当是个幻想家;谁不是幻想家,谁就只能把自己称为实践家。 —— 巴尔扎克
开始你的任务吧,祝你成功!
import torch
from torch.autograd import Variable
import warnings  
# 忽略特定警告  
warnings.filterwarnings("ignore", message="The .grad attribute of a Tensor that is not a leaf Tensor is being accessed.*") x = torch.FloatTensor([1,2,3])
x = Variable(x, requires_grad=True)#/********** Begin *********/
#创建一个变量 y,由 x 的平方计算得到
y = x * x
#按照要求输出y相应的属性
print(y)
print('Requires Gradient : %s ' % (y.requires_grad))
print('Gradient : %s ' % (y.grad))
#/********** End *********

第3关:梯度初探

接下来让我们一探神秘的梯度求导吧!

  • 任务描述

结合上一关卡所介绍的Variable属性,我们将进一步学习Variable的反向传播函数backward,从而计算出其梯度的大小。

本关任务:

本关提供了一个 Variable 类型的变量x,并将x的 requires_grad设置为True,以便后续的求导操作。在 x 基础上进行相应的运算得到y ,在 y的基础上进行运算得到z,令变量out为 z 的平均值,计算out 的梯度并输出x的梯度值。求导计算的步骤如下所示:

  • 编程要求

本关涉及的代码文件为gradient.py,本次编程任务是补全右侧代码片段中Begin至End中间的代码,具体要求如下:

在 x 基础上进行运算, y = x + 2;

在 y 基础上进行运算, z = y * y * 3;

令变量out为 z 的平均值并输出;

计算 out 的梯度并输出x的梯度值;

具体请参见后续测试样例。

  • 测试说明

测试过程:

本关涉及的测试文件为gradient.py,运行用户填写后的程序判断正误。

根据程序的输出判断程序是否正确,若正确则输出下面的预期输出,否则报错。

请注意输出格式及规范。

以下是测试样例:

测试输入:
预期输出:

output:
 Variable containing:
 40.5000
[torch.FloatTensor of size 1]

Variable containing:
 3.0000
 4.5000
 6.0000
 7.5000
[torch.FloatTensor of size 4]

科学的界限就像地平线一样:你越接近它,它挪得越远。——布莱希特
开始你的任务吧,祝你成功!

import torch
from torch.autograd import Variable x = Variable(torch.Tensor(range(4)), requires_grad=True)
#/********** Begin *********/
#在 x 基础上进行运算, y = x + 2
y = x + 2
#在 y 基础上进行运算, z = y * y * 3
z = y * y * 3
#令变量 out 为 z 的平均值并输出
out = z.mean()#计算 out 的梯度并输出x的梯度值
out.backward(retain_graph=True)
print('output:')
print(out.item())print(x.grad)
#/********** End *********

第4关:梯度进阶

在上一关卡中,我们学习了利用.backward ()对Variable 变量进行反向传播求导,本关将介绍另一种求解梯度的方法——torch.autograd.grad。

  • 任务描述

本关任务:

本关提供了Variable 类型的变量x和Variable 类型的变量y,并将x 和y的requires_grad设置为True以便后续的求导操作。在 x和y的基础上进行运算得到z,利用torch.autograd.grad方法求梯度 dz_dx和dz_dy。

  • 编程要求

本关涉及的代码文件为autograd_grad.py,本次编程任务是补全右侧代码片段中Begin至End中间的代码,具体要求如下:

计算 z = x*x + 3*y;

求梯度 dz_dx和dz_dy 并输出;

具体请参见后续测试样例。

  • 测试说明

测试过程:

本关涉及的测试文件为autograd_grad.py,运行用户填写后的程序判断正误;

根据程序的输出判断程序是否正确,若正确则输出下面的预期输出,否则报错;

请注意输出格式及规范。

以下是测试样例:

dz_dx: 
 (Variable containing:
  2   4   6
  8  10  12
[torch.FloatTensor of size 2x3]
,)
dz_dy: 
 (Variable containing:
 3  3  3
 3  3  3
[torch.FloatTensor of size 2x3]
,)

真正的科学家应当是个幻想家;谁不是幻想家,谁就只能把自己称为实践家。 —— 巴尔扎克
开始你的任务吧,祝你成功!
import torch
from torch.autograd import Variablex = Variable(torch.unsqueeze(torch.linspace(1, 6, 6), dim = 1).view(2, 3), requires_grad=True)y = Variable(torch.Tensor(2, 3).uniform_(-1, 1), requires_grad=True)#/********** Begin *********/
#计算 z = x*x + 3*y
z = x*x + 3*y#求dz_dx和dz_dy 并输出
dz_dx = torch.autograd.grad(z, x, grad_outputs=torch.ones_like(z))
dz_dy = torch.autograd.grad(z, y, grad_outputs=torch.ones_like(z))
print("dz_dx: \n",dz_dx)
print("dz_dy: \n",dz_dy)
#/********** End *********/ 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.pswp.cn/pingmian/82687.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

篇章二 数据结构——前置知识(二)

目录 1. 包装类 1.1 包装类的概念 1.2 基本数据类型和对应的包装类 1.3 装箱和拆箱 1.4 自动装箱和自动拆箱 1.5 练习 —— 面试题 2. 泛型 2.1 如果没有泛型——会出现什么情况&#xff1f; 2.2 语法 2.3 裸类型 1.没有写<> 但是没有报错为什么&#xff1f; …

Git典型使用场景相关命令

Git典型使用场景相关命令 1 建立本地仓库与远程仓库的联系2 作为开发者参与项目的常用命令2-1 一般步骤2-2 **合并与同步主分支改动**2-3 **查看日志和差异**2-4 **提交后想修改或撤销**2-5 分支管理2-6 清除未被追踪的文件&#xff08;谨慎使用&#xff09; 3 作为远程仓库管理…

redis缓存-更新策略-三大缓存问题

缓存&#xff1a;数据交换的缓冲区&#xff0c;存储的数据的临时地方&#xff0c;读写性能较高。 步骤&#xff1a; 先从redis里面查询 缓存命中&#xff1a;直接返回结果缓存未命中 从数据库里面查询 没有数据&#xff1a;返回null有数据&#xff1a;存到redis里面&#xff…

[TriCore] 01.QEMU 虚拟化 TriCore 架构中的寄存器 指令

目录 1.寄存器宏 - FIELD() 2.寄存器操作 - FIELD_SETTER() & FIELD_GETTER() 3.指令辅助方法 - HELPER() 3.1.辅助宏 3.2.指令示例 3.3.函数调用 4.PSW 寄存器读写 - psw_read() & psw_write() 1.寄存器宏 - FIELD() FIELD() 宏定义寄存器 MASK // include/hw…

《软件工程》第 4 章 - 需求获取

在软件工程中&#xff0c;需求获取是挖掘用户真实需求的关键步骤&#xff0c;它为后续的设计、开发和测试提供坚实基础。本章将围绕需求获取的流程、方法及工具展开&#xff0c;结合实际案例与 Java 代码&#xff0c;深入讲解这一重要环节。 4.1 软件需求的初始表示 4.1.1 用例…

react diff 算法

diff 算法作为 Virtual DOM 的加速器&#xff0c;其算法的改进优化是 React 整个界面渲染的基础和性能的保障&#xff0c;同时也是 React 源码中最神秘的&#xff0c;最不可思议的部分 diff 算法会帮助我们就算出 VirtualDOM 中真正变化的部分&#xff0c;并只针对该部分进行原…

Gin项目脚手架与标配组件

文章目录 前言设计思想和原则✨ 技术栈视频实况教程sponge 内置了丰富的组件(按需使用)几个标配常用组件主要技术点另一个参考链接 前言 软件和汽车一样&#xff0c;由多个重要零部件组装而成。 本文堆积了一些常用部件&#xff0c;还没来得及好好整理。先放着。 神兵利器虽多…

【Webtrees 手册】第 10章 - 用户体验

Webtrees 手册/用户体验 < Webtrees 手册 跳转到导航跳转到搜索 信息 手册部分仍在建设中 请耐心等待或随意贡献自己的力量:-)。 第 10 章 - 用户体验 <- 章节概述 目录 1多位系谱学家的合作 1.1家庭研究模型1.2“孤胆战士”模型1.3示范“本地家庭书”1.4模特“俱乐部”…

Linux 进程概念(下)

目录 前言 4.进程状态 一.普遍的操作系统层面上宏观概念&#xff1a; 二.具体的Linux操作系统的状态&#xff1a; 5.进程优先级&#xff08;了解&#xff09; 6.其他概念 进程切换 前言 本篇是接着上一篇的内容继续往下了解进程相关的一些概念&#xff01; 4.进程状态 运…

使用java实现word转pdf,html以及rtf转word,pdf,html

word,rtf的转换有以下方案&#xff0c;想要免费最靠谱的是LibreOffice方案, LibreOffice 是一款 免费、开源、跨平台 的办公软件套件&#xff0c;旨在为用户提供高效、全面的办公工具&#xff0c;适用于个人、企业和教育机构。它支持多种操作系统&#xff08;Windows、macOS、…

IP证书的作用与申请全解析:从安全验证到部署实践

在网络安全领域&#xff0c;IP证书&#xff08;IP SSL证书&#xff09;作为传统域名SSL证书的补充方案&#xff0c;专为公网IP地址提供HTTPS加密与身份验证服务。本文将从技术原理、应用场景、申请流程及部署要点四个维度&#xff0c;系统解析IP证书的核心价值与操作指南。 一…

GitLab 18.0 正式发布,15.0 将不再受技术支持,须升级【三】

GitLab 是一个全球知名的一体化 DevOps 平台&#xff0c;很多人都通过私有化部署 GitLab 来进行源代码托管。极狐GitLab 是 GitLab 在中国的发行版&#xff0c;专门为中国程序员服务。可以一键式部署极狐GitLab。 学习极狐GitLab 的相关资料&#xff1a; 极狐GitLab 官网极狐…

超简单Translation翻译模型部署

Helsinki-NLP/opus-mt-{en}-{zh}系列翻译模型可以实现200多种语言翻译&#xff0c;Helsinki-NLP/opus-mt-en-zh是其中英互译模型。由于项目需要&#xff0c;在本地进行搭建&#xff0c;并记录下搭建过程&#xff0c;方便后人。 1. 基本硬件环境 CPU&#xff1a;N年前的 Intel…

Go语言JSON 序列化与反序列化 -《Go语言实战指南》

JSON&#xff08;JavaScript Object Notation&#xff09;是一种常见的数据交换格式。Go 标准库提供了 encoding/json 包&#xff0c;用于方便地将结构体与 JSON 之间互转。 一、序列化&#xff08;Marshal&#xff09; 将 Go 中的数据结构&#xff08;如结构体、map、slice 等…

免费PDF工具-PDF24V9.16.0【win7专用版】

【百度】https://pan.baidu.com/s/1H7kvHudG5JTfxHg-eu2grA?pwd8euh 提取码: 8euh 【夸克】https://pan.quark.cn/s/92080b2e1f4c 【123】https://www.123912.com/s/0yvtTd-XAHjv https://creator.pdf24.org/listVersions.php

网络 :序列和反序列化

网络 &#xff1a;序列和反序列化 &#xff08;一&#xff09;序列和反序列 概念&#xff08;二&#xff09;实例1. 封装socket 接口2. 制定协议&#xff08;用于实现序列和反序列化&#xff09;3. 计算(实现计算器功能)4. 服务器(将上面所有的类功能调用起来)5. 服务端6.客户端…

LiveQing 视频点播流媒体 RTMP 推流服务功能:搭建 RTMP 视频流媒体服务详细指南

LiveQing视频点播流媒体RTMP推流服务功能&#xff1a;搭建RTMP视频流媒体服务详细指南 一、流媒体服务搭建二、推流工具准备三、创建鉴权直播间四、获取推流地址五、配置OBS推流六、推流及播放七、获取播放地址7.1 页面查看视频源地址7.2 接口查询 八、相关问题解决8.1 大疆无人…

UE5 Niagara 如何让四元数进行旋转

Axis Angle中&#xff0c;X,Y,Z分别为旋转的轴向&#xff0c;W为旋转的角度&#xff0c;在这里旋转角度不需要除以2&#xff0c;因为里面已经除了&#xff0c;再将计算好的四元数与要进行旋转的四元数进行相乘&#xff0c;结果就是按照原来的角度绕着某一轴向旋转了某一角度

【微服务】SpringBoot 对接飞书审批流程使用详解

目录 一、前言 二、前置准备 2.1 开通企业飞书账户 2.2 确保账户具备多维表操作权限 2.3 获取飞书开放平台文档 2.4 创建应用 2.5 发布应用 2.6 应用添加操作权限 2.7 获取SDK 三、审批流程对接过程 3.1 配置流程审批定义(流程审批模型) 3.2 自定义应用添加审批AP…

主键与唯一键详解:概念、区别与面试要点

主键与唯一键详解:概念、区别与面试要点 一、核心概念解析 1.1 主键(Primary Key) 主键是数据库表中用于唯一标识每一行记录的列或列组合,具有以下核心特性: 唯一性:主键值在整个表中必须唯一,不允许重复非空性:主键列不允许包含NULL值不可变性:主键值一旦确立,原则…