Torch和Numpy之——基本运算

1矩阵的四则运算

输入

import torch

a = torch.arange(6).reshape(2,3)
b = torch.arange(1,3).reshape(2,1)  #将行向量转化为列向量便于广播
print(a)print(b)print(a+b)  #对应位置的元素性加(减法同加法)print(a*b)  #对应位置的元素相乘(除法同乘法,注意:除数不能为0)

输出

tensor([[0, 1, 2],
        [3, 4, 5]])
tensor([[1],         #此处运算时进行了广播,即复制成3列
        [2]])
tensor([[1, 2, 3],
        [5, 6, 7]])
tensor([[ 0,  1,  2],
        [ 6,  8, 10]])

2数乘(叉乘)

2.1标量(Scalar)与向量(vector)

输入

import torch

a = torch.arange(1,3)
b = torch.tensor(3)

print(a)
print(b)
print(a*b)

 输出

tensor([1, 2])
tensor(3)
tensor([3, 6])

2.2向量与向量

输入

import torch

a = torch.arange(1,4)
b = torch.arange(2,5)

print(a)
print(b)
print(a*b)

输出

tensor([1, 2, 3])
tensor([2, 3, 4])
tensor([ 2,  6, 12])

2.3向量与矩阵

输入

import torch

a = torch.arange(1,7).reshape(3,2)
b = torch.arange(2,4)
c = torch.arange(1,4).reshape(3,1)
print(a)
print(b)
print(c)
print("__________________________________")
print(a*b)
print(a*c)

输出

tensor([[1, 2],
        [3, 4],
        [5, 6]])
tensor([2, 3])
tensor([[1],
        [2],
        [3]])
__________________________________
tensor([[ 2,  6],
        [ 6, 12],
        [10, 18]])
tensor([[ 1,  2],
        [ 6,  8],
        [15, 18]])

2.4矩阵与标量

输入

import torch

a = torch.arange(1,7).reshape(3,2)
b = torch.tensor(3)
print(a)
print(b)

print(a*b)

输出

tensor([[1, 2],
        [3, 4],
        [5, 6]])
tensor(3)
tensor([[ 3,  6],
        [ 9, 12],
        [15, 18]])

3点乘

3.1向量与向量

输入

import torch

a = torch.arange(1,7)
b = torch.arange(3,9)
print(a.dot(b))

输出

tensor(133)

3.2矩阵与向量

torch中dot()不可以做矩阵和向量的点乘,可以在numpy中实现该功能,在numpy中既可以做一维的点乘,也可以做多为的点乘,形状相同时做矩阵乘法

输入

import numpy as np

a = np.arange(1,7).reshape(3,2)
b = np.arange(1,3)
print(a)
print(b)
print(a.dot(b))

输出

[[1 2]
 [3 4]
 [5 6]]
[1 2]
[ 5 11 17]

如果要在torch中实现该功能可使用如下方法:

输入

import torch

a = torch.arange(1,7).reshape(3,2)
b = torch.arange(1,3)
print(a)
print(b)
print("________________________________________________")
print(a@b)                    #方法1
print(a.matmul(b))            #方法2
print(torch.matmul(a,b))      #方法3

输出

tensor([[1, 2],
        [3, 4],
        [5, 6]])
tensor([1, 2])
________________________________________________
tensor([ 5, 11, 17])
tensor([ 5, 11, 17])
tensor([ 5, 11, 17])

 4求逆矩阵

输入

import torch
import numpy as np

#torch实现
a = torch.tensor([[3.,4.],[5.,6.]])
print(torch.inverse(a))

#numpy实现
b = np.array([[3.,4.],[5.,6.]])
print(np.linalg.inv(b))

输出

tensor([[-3.0000,  2.0000],
        [ 2.5000, -1.5000]])
[[-3.   2. ]
 [ 2.5 -1.5]]

 5求矩阵的内积与外积

内积:对应元素相乘再求和

外积:只相乘

输入

import numpy as np

a = np.array([3,2,2])
c = np.array([1,2,1])
print(a)
print(c)

f = np.sum(a*c)
print(f)

print(np.dot(a,c))
print(a*c)

输出

[3 2 2]
[1 2 1]
9
9
[3 4 2]

 6求矩阵特征值与特征向量

输入

import torch

a = torch.tensor([[3.,4.,7.],[5.,6.,8.],[2.,5.,5.]])
b = torch.tensor([[2.,5.],[3.,5.]])

print(torch.eig(a))  #求特征值

print('_____________________________________________')
print(torch.eig(a,eigenvectors=True))  #求特征向量
print("**********************************************")
print(torch.eig(b,eigenvectors=True))

输出

torch.return_types.eig(
eigenvalues=tensor([[14.8539,  0.0000],
        [-0.4269,  1.2251],
        [-0.4269, -1.2251]]),
eigenvectors=tensor([]))
_____________________________________________
torch.return_types.eig(
eigenvalues=tensor([[14.8539,  0.0000],
        [-0.4269,  1.2251],
        [-0.4269, -1.2251]]),
eigenvectors=tensor([[-0.5181,  0.6686,  0.0000],
        [-0.7157, -0.0399, -0.5309],
        [-0.4683, -0.3045,  0.4204]]))
**********************************************
torch.return_types.eig(
eigenvalues=tensor([[-0.6533,  0.0000],
        [ 7.6533,  0.0000]]),
eigenvectors=tensor([[-0.8833, -0.6625],
        [ 0.4688, -0.7491]]))

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值