下面是以numpy举例的,但是几乎都可以转成pytorch 对应的计算。
import numpy as np
向量运算
a = np.array([1,2])
b = np.array([2,1])
# 向量相乘
dot = sum([i*j for i,j in zip(a,b)])
print('非numpy 计算 向量相乘结果: ',dot)
## 向量相乘numpy 用法
dot1 = np.sum(a*b)
dot2 = (a*b).sum()
dot3 = np.dot(a,b)
dot4 = a.dot(b)
dot5 = b.dot(a)
print('numpy 计算向量相乘结果: ', dot1, dot2, dot3, dot4, dot5)
非numpy 计算 向量相乘结果: 4
numpy 计算向量相乘结果: 4 4 4 4 4
# 向量长度
la = np.sqrt((a*a).sum())
la2 = np.linalg.norm(a)
print('非库函数: ',la)
print('库函数: ',la2)
非库函数: 2.23606797749979
库函数: 2.23606797749979
# 两个向量夹角
# 第一种: 夹角范围是锐角0-90
# 第二种: 夹角范围在0-180
# 向量乘积 A*B = |A|*|B|*cos(angle)
cosangle = np.dot(a,b)/(np.linalg.norm(a) * np.linalg.norm(b))
angle = np.arccos(cosangle)
# 注意:np.arccos(x) 返回的是x的反余弦值,是以弧度表示的
# 将弧度转成角度
angle_theta = np.rad2deg(angle)#库函数形式 弧度转角度
angle_theta2 = angle*180/np.pi #非库函数 弧度转角度
print(cosangle, angle, angle_theta, angle_theta2)
# 其他弧度转角度 vs 角度转弧度 弧度:radian, 角度angle degree
r = np.deg2rad(45)
d = np.rad2deg(np.pi/4)
print('45角度转弧度:', r, ' pi/4弧度转角度:', d)
0.7999999999999998 0.6435011087932847 36.86989764584404 36.86989764584404
45角度转弧度: 0.7853981633974483 pi/4弧度转角度: 45.0
未完待续