当前位置:网站首页>"Hands on learning in depth" Chapter 2 - preparatory knowledge_ 2.3 linear algebra_ Learning thinking and exercise answers

"Hands on learning in depth" Chapter 2 - preparatory knowledge_ 2.3 linear algebra_ Learning thinking and exercise answers

2022-07-06 02:31:00 coder_ sure


2.3 linear algebra

author github link github link

practice

  1. Prove a matrix A \mathbf{A} A The transpose of is A \mathbf{A} A, namely ( A ⊤ ) ⊤ = A (\mathbf{A}^\top)^\top = \mathbf{A} (A)=A.
  2. Two matrices are given A \mathbf{A} A and B \mathbf{B} B, prove “ They are transposed and ” be equal to “ They are transposed with ”, namely A ⊤ + B ⊤ = ( A + B ) ⊤ \mathbf{A}^\top + \mathbf{B}^\top = (\mathbf{A} + \mathbf{B})^\top A+B=(A+B).
  3. Given an arbitrary square matrix A \mathbf{A} A, A + A ⊤ \mathbf{A} + \mathbf{A}^\top A+A Is it always symmetrical ? Why? ?
  4. We define shapes in this section ( 2 , 3 , 4 ) (2,3,4) (2,3,4) Tensor X.len(X) What is the output of ?
  5. For tensors of arbitrary shape X,len(X) Whether it always corresponds to X The length of a particular axis ? What is this axis ?
  6. function A/A.sum(axis=1), See what happens . Can you analyze the reason ?
  7. Consider a with a shape ( 2 , 3 , 4 ) (2,3,4) (2,3,4) Tensor , In the shaft 0、1、2 What shape is the summation output on ?
  8. by linalg.norm Function provides 3 Tensors of one or more axes , And observe its output . For tensors of any shape, what does this function calculate ?

Practice reference answers ( If there is a mistake , Please also correct )

1. Prove a matrix A \mathbf{A} A The transpose of is A \mathbf{A} A, namely ( A ⊤ ) ⊤ = A (\mathbf{A}^\top)^\top = \mathbf{A} (A)=A.

=·torch.arange(12).reshape(3,4)A,(A.T).T

output:


 (tensor([[ 0,  1,  2,  3],
         [ 4,  5,  6,  7],
         [ 8,  9, 10, 11]]), tensor([[ 0,  1,  2,  3],
         [ 4,  5,  6,  7],
         [ 8,  9, 10, 11]]))

2. Two matrices are given A \mathbf{A} A and B \mathbf{B} B, prove “ They are transposed and ” be equal to “ They are transposed with ”, namely A ⊤ + B ⊤ = ( A + B ) ⊤ \mathbf{A}^\top + \mathbf{B}^\top = (\mathbf{A} + \mathbf{B})^\top A+B=(A+B).

B = torch.tensor([[9, 8, 7,6], [5, 4, 3,2], [3, 4, 5,1]])
A.T+B.T ,(A+B).T

output:

(tensor([[ 9,  9, 11],
         [ 9,  9, 13],
         [ 9,  9, 15],
         [ 9,  9, 12]]), tensor([[ 9,  9, 11],
         [ 9,  9, 13],
         [ 9,  9, 15],
         [ 9,  9, 12]]))

3. Given an arbitrary square matrix A \mathbf{A} A, A + A ⊤ \mathbf{A} + \mathbf{A}^\top A+A Is it always symmetrical ? Why? ?
answer : because ( A + A ⊤ ) ⊤ = A ⊤ + A = A + A ⊤ (\mathbf{A} + \mathbf{A}^\top)^\top=\mathbf{A}^\top+\mathbf{A}=\mathbf{A} + \mathbf{A}^\top A+A)=A+A=A+A

A = torch.arange(9).reshape(3,3)
A

output:

tensor([[0, 1, 2],
        [3, 4, 5],
        [6, 7, 8]])
A+A.T

output:

tensor([[ 0,  4,  8],
        [ 4,  8, 12],
        [ 8, 12, 16]])

4. We define shapes in this section ( 2 , 3 , 4 ) (2,3,4) (2,3,4) Tensor X.len(X) What is the output of ?

X = torch.arange(24).reshape(2, 3, 4)
len(X)

output:

2

5. For tensors of arbitrary shape X,len(X) Whether it always corresponds to X The length of a particular axis ? What is this axis ?

answer :len(X) Total correspondence No 0 Length of shaft .
6. function A/A.sum(axis=1), See what happens . Can you analyze the reason ?

answer : Unable to run , as a result of A It's a 5 * 4 Matrix , and A.sum(axis=1) It's a flattened 1 Dimension vector , The two dimensions do not match and cannot be divided .( notes : Broadcasting can only happen when the two dimensions are the same , For example, they are all two-dimensional )

A = torch.arange(20, dtype=torch.float32).reshape(5, 4)
A/A.sum(axis=1,keepdims=True)

output:

tensor([[0.0000, 0.1667, 0.3333, 0.5000],
        [0.1818, 0.2273, 0.2727, 0.3182],
        [0.2105, 0.2368, 0.2632, 0.2895],
        [0.2222, 0.2407, 0.2593, 0.2778],
        [0.2286, 0.2429, 0.2571, 0.2714]])
A = torch.arange(20, dtype=torch.float32).reshape(5, 4)
A/A.sum(axis=1)

output:

---------------------------------------------------------------------------
RuntimeError                              Traceback (most recent call last)
<ipython-input-59-86c8759e15d3> in <module>()
      1 A = torch.arange(20, dtype=torch.float32).reshape(5, 4)
----> 2 A/A.sum(axis=1)

RuntimeError: The size of tensor a (4) must match the size of tensor b (5) at non-singleton dimension 1

7. Consider a with a shape ( 2 , 3 , 4 ) (2,3,4) (2,3,4) Tensor , In the shaft 0、1、2 What shape is the summation output on ?


H=torch.arange(24).reshape(2,3,4)
H


output:

 tensor([[[ 0,  1,  2,  3],
         [ 4,  5,  6,  7],
         [ 8,  9, 10, 11]],

        [[12, 13, 14, 15],
         [16, 17, 18, 19],
         [20, 21, 22, 23]]])
H0 = H.sum(axis=0)
H1 = H.sum(axis=1)
H2 = H.sum(axis=2)
H0,  H1,  H2

output:

(tensor([[12, 14, 16, 18],
         [20, 22, 24, 26],
         [28, 30, 32, 34]]), tensor([[12, 15, 18, 21],
         [48, 51, 54, 57]]), tensor([[ 6, 22, 38],
         [54, 70, 86]]))

8. by linalg.norm Function provides 3 Tensors of one or more axes , And observe its output . For tensors of any shape, what does this function calculate ?
answer : In fact, it is the operation of finding norms ( The default is 2 norm )

Z=torch.ones(2,3,4)
W=torch.ones(2,2,3,4)
torch.norm(Z)*torch.norm(Z),torch.norm(W)*torch.norm(W)

output:

(tensor(24.0000), tensor(48.))
原网站

版权声明
本文为[coder_ sure]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/02/202202140018252030.html