动手学深度学习--基础知识上篇

动手学deep learning
☁️本专栏会定期更新关于动手学深度学习的每章知识点的讲解,题目答案
如果喜欢,欢迎点赞,收藏

动手学深度学习-预备知识篇

线性代数篇

1-3题讲解

  1. 证明一个矩阵 A \mathbf{A} A的转置的转置是 A \mathbf{A} A,即 ( A ⊤ ) ⊤ = A (\mathbf{A}^\top)^\top = \mathbf{A} (A)=A
import torch as tc
A = torch.arange(24,dtype = torch.float32).reshape(4,-1)
print(1,A),print(1,(A.T).T)
  • 运行结果

动手学深度学习--基础知识上篇_第1张图片
2. 给出两个矩阵 A \mathbf{A} A B \mathbf{B} B,证明“它们转置的和”等于“它们和的转置”,即 A ⊤ + B ⊤ = ( A + B ) ⊤ \mathbf{A}^\top + \mathbf{B}^\top = (\mathbf{A} + \mathbf{B})^\top A+B=(A+B)

# 2.证明两个矩阵的转置的和等于矩阵和的转置
A1 = torch.arange(24,dtype = torch.float32).reshape(4,-1)+2
print(A.T+A1.T),print((A+A1).T)
  • 运行结果

动手学深度学习--基础知识上篇_第2张图片
3. 给定任意方阵 A \mathbf{A} A A + A ⊤ \mathbf{A} + \mathbf{A}^\top A+A总是对称的吗?为什么?

# 3.对于任意给定的*方*阵A,总是有A+A.T是对称矩阵???
Z = torch.arange(16,dtype = torch.float32).reshape(4,-1)
print(3,Z+Z.T),print(3,(Z+Z.T).T)
Y = torch.tensor(([4,2,3,4],[42,12,56,88],[74,32,12,44],[9,93,32,12]))
print((Y+Y.T)),print((Y+Y.T).T)
  • 运行结果

动手学深度学习--基础知识上篇_第3张图片

4-9题讲解

  1. 本节中定义了形状 ( 2 , 3 , 4 ) (2,3,4) (2,3,4)的张量Xlen(X)的输出结果是什么?
# 4.X = torch.arange(24,dtype = torch.float32).reshape(2,3,4),求len(X)
X = torch.arange(24,dtype = torch.float32).reshape(2,3,4)
print(len(X),len(X[1]),print(X))
  • 运行结果

动手学深度学习--基础知识上篇_第4张图片
5. 对于任意形状的张量X,len(X)是否总是对应于X特定轴的长度?这个轴是什么?

# 5.给定一个任意的张量,要指出len(X)是对应的那个轴的长度,这个轴是什么
X1 = tc.ones(24).reshape(6,-1)  #轴度为2
print(len(X1))                  
X2 = tc.arange(24).reshape(4,2,-1) #轴度为3
print(len(X2))
W = tc.zeros(30)             #轴度为1
print(len(W))
  • 运行结果

第五道题目
6. 运行A/A.sum(axis=1),看看会发生什么。请分析一下原因?
动手学深度学习--基础知识上篇_第5张图片

  • 更改之后,不能再除
    动手学深度学习--基础知识上篇_第6张图片
  1. 考虑一个具有形状 ( 2 , 3 , 4 ) (2,3,4) (2,3,4)的张量,在轴0、1、2上的求和输出是什么形状?
print(X.sum(axis = 0)),print(X.sum(axis = 1)),print(X.sum(axis = 2))
  • 运行结果
    动手学深度学习--基础知识上篇_第7张图片
  1. linalg.norm函数提供3个或更多轴的张量,并观察其输出。对于任意形状的张量这个函数计算得到什么?
# 8.为linalg.norm函数提供3个或更多轴的张量,并观察其输出。对于任意形状的张量这个函数计算得到什么?
from math import sqrt
W1 = tc.arange(1024,dtype = torch.float32).reshape(1,2,2,256)
print(tc.norm(W1))
W2 = tc.arange(36,dtype = torch.float32).reshape(6,6)
print(tc.norm(W2) == sqrt((W2*W2).sum(axis = [0,1])))
print(sum(sum(W2*W2)))
print((W2*W2).sum(axis = [0,1]))
  • 运行结果

动手学深度学习--基础知识上篇_第8张图片

下篇预备知识:

1.微分学实现绘画切线
2.详解微分函数实现过程

你可能感兴趣的:(深度学习,人工智能)