栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

总结3(9.20

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

总结3(9.20

       开学第3周 本周在常规课程学习的基础上 报名了六级考试 开始坚持每天背一点单词。完成了李沐深度学习5-8课时的学习 以下是我对部分作业题的代码编写和总结。

三、线性代数作业题 3.1.我们在本节中定义了形状 2,3,4 的张量X。len(X)的输出结果是什么 对于任意形状的张量X,len(X)是否总是对应于X特定轴的长度?这个轴是什么?
import torch
X torch.arange(24).reshape(2, 3, 4)
len(X)

    输出结果为2。因为len(X)的输出总是对应第0轴的长度。

3.2.运行A/A.sum(axis 1) 看看会发生什么。你能分析原因吗
A torch.arange(20).reshape(5,4)
A/A.sum(axis 1) #改为A/A.sum(axis 0)可行

      输出结果报错 因为A是5*4矩阵A.sum(axis 1)是一个1*5向量无法触发广播机制。若改为axis 0 则可行。

3.3.当你在曼哈顿的两点之间旅行时 你需要在坐标上走多远 也就是说 就大街和街道而言 你能斜着走吗

      不能斜着走 用一范数来刻画距离。

3.4.向linalg.norm函数提供3个或更多轴的张量 并观察其输出。对于任意形状的张量这个函数计算得到什么?

A torch.ones(12).reshape(2,2,3)
print(A)
A A.float()
torch.norm(A)##所有值的L2范数

输出结果

tensor(3.4641)

     对更多轴的张量求范数时 仍然是把所有数据进行求。

四、微分和求导作业题 4.1.绘制函数和其在x 1处切线的图像。 
import numpy as np
from d2l import torch as d2l 
x np.arange(0.5,2,0.1)#生成一组数 起点x 0.5 终点x 2 步长是0.1
def f(x):
 return x**3-x**(-1)
d2l.plot(x,[f2(x),4*x-4], x , f(x) ,legend [ f(x) , Tangent line (x 1) ])

 输出结果

 4.2.为什么计算二阶导数比一阶导数的开销要更大

     因为计算二阶导数需要先求一阶导数。

4.3.在运行反向传播函数之后 立即再次运行它 看看会发生什么。 

     会报错 因为不允许连续backward 前向过程建立计算图 反向传播后释放需要更新x.grad才可以再backward。

4.4.在控制流的例子中 我们计算d关于a的导数 如果我们将变量a更改为随机向量或矩阵 会发生什么 此时 计算结果f(a)不再是标量。结果会发生什么 我们如何分析这个结果

     对向量矩阵直接进行反向传播会报错。对非标量调用 backward 需要传入一个 gradient 参数 该参数指定微分函数关于 self 的梯度。

4.5.重新设计一个求控制流梯度的例子。运行并分析结果。
def f(a):
 if a.norm() 10:
 b 2*a
 else:
 b a 2
 return b
a torch.randn(10, requires_grad True)
d f(a)
print(d)
#d.backward()
d.sum().backward()#等价于d.backward(torch.ones(len(a)))
a.grad

运行结果

tensor([1.0999, 2.2732, 1.8459, 0.1245, 2.4950, 1.9525, 4.6292, 2.4428, 2.4967,
 1.2529], grad_fn AddBackward0 )
tensor([1., 1., 1., 1., 1., 1., 1., 1., 1., 1.])
4.6.使 ( ) sin( ) 绘制 ( )和 ( ) 的图像 其中后者不使用 ′( ) cos( )。
x torch.arange(-5,5,0.1,requires_grad True) 
y torch.sin(x)#f sinx(x)
grad torch.zeros(len(y))#创建保存f (x[i]) 导数的向量grad
x1 x.detach().numpy()#tensor转array才可以调用绘图函数
y1 y.detach().numpy()
for i in range(len(grad)): #求sinx在每一个x[i]处的导数
 y[i].backward(retain_graph True) #自动求导
 grad[i] x.grad[i]
d2l.plot(x1,[y1,grad], x , f(x) ,legend [ f(x) , df(x) ])

运行结果

        总结 这周上课状态越来越好了 但仍然有一些课程跟不太上 作业题不会写。可能是因为前两周没有及时把课上内容弄懂积累下来的所以跟不上。深度学习方面课程也是越来越难 虽然作业题都比较简单 但确画了课后很多时间。总体学习效率还是偏低 一周过得很快 希望下周能更加努力。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/266928.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号