李沐动手学深度学习pytorch版 pycharm代码实现

 05线性代数代码的实现

#数据预处理

import os
import numpy as np
import pandas as pd
import torch
from numpy import nan as NaN



#P5线性代数的补充

A = torch.arange(20).reshape(5,4)
#print(A)
#print(A.T)  #矩阵的转置

B = torch.tensor([[1,2,3],[2,0,4],[3,4,5]])  #创建对称矩阵
#print(B)
#print(B == B.T) #比较B和B转置是否一样

X = torch.arange(24).reshape(2,3,4) #创建三维张量   行 最后一维  列 第二维
#print(X)

A = torch.arange(20,dtype = torch.float32).reshape(5,4)
B = A.clone() #通过分配新内存,将A的一个副本分配给B
#print(A)
#print(A+B)
#print(A*B)
a = 2
X = torch.arange(24).reshape(2,3,4)
#print(a+X) #X 的所有元素加上2
#print((a * X).shape) #所有元素乘以a

X = torch.arange(4,dtype=torch.float32)
#print(X)
#print(X.sum())
A = torch.arange(20,dtype=torch.float32).reshape(5,4)
#print(A.shape)
#print(A.sum())
A_sum_axis0 = A.sum(axis=0) #对第一维度进行求和
#print(A_sum_axis0)
#print(A_sum_axis0.shape)
A_sum_axis1 = A.sum(axis=1) #对第二维度(列)进行求和
#print(A_sum_axis1)
#print(A_sum_axis1.shape)
A_sum_axis2 = A.sum(axis=[0,1]) #对两个维度(先行后列)进行求和
#print(A_sum_axis2)
#print(A_sum_axis2.shape)

#print(A.mean())
#print(A.sum()/A.numel())

A.mean(axis = 0)
A.sum(axis = 0)/A.shape[0]
#计算总和或均值时保持轴数不变
sum_A = A.sum(axis=1,keepdims=True)
#print(sum_A)

#通过广播将A除以sum_A
#print(A/sum_A)

#某个轴计算A元素的累积总和
#print(A.cumsum(axis=0))

#点积是相同位置的按元素乘积的和
y = torch.ones(4,dtype = torch.float32)
#print(X)
#print(y)
#print(torch.dot(X,y))

#我们可以通过执行按元素乘法,然后进行求和来表示两个向量的点积

#print(torch.sum(X*y))
#矩阵向量积A*X是一个长度为m的列向量,其i(th)元素是点积a转置X
#print(A.shape)
#print(X.shape)
#print(torch.mv(A,X))#A的第i行和X做点积
#我们可以将矩阵-矩阵乘法AB看作是简单地执行m次矩阵-向量积,并将结果拼接在一起,形成一个n*m矩阵
B = torch.ones(4,3)
#print(torch.mm(A,B))

#L2范数是向量元素平方和的平方根   范数是一个向量或矩阵的长度
u = torch.tensor([3.0,-4.0])
#print(torch.norm(u))

#L1范数,它表示为向量元素的绝对值之和

#print(torch.abs(u).sum())

#矩阵的弗罗贝尼乌斯范数 是 矩阵元素的平方和的平方根   F范数

#print(torch.norm(torch.ones(4,9)))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值