资讯 小学 初中 高中 语言 会计职称 学历提升 法考 计算机考试 医护考试 建工考试 教育百科
栏目分类:
子分类:
返回
空麓网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
空麓网 > 计算机考试 > 软件开发 > 后端开发 > Python

4.pytorch 线性代数基础练习

Python 更新时间: 发布时间: 计算机考试归档 最新发布

4.pytorch 线性代数基础练习

import os
os.makedirs(os.path.join('..','data'),exist_ok=True)
datafile = os.path.join('..','data','house_tiny.csv')
with open(datafile,'w') as f:
    f.write('NumRooms,Alley,Pricen')
    f.write('NA,Pave,127500n')
    f.write('2,NA,106000n')
    f.write('4,NA,178100n')
    f.write('NA,NA,140000n')
import pandas as pd

data =pd.read_csv(datafile)
data
NumRoomsAlleyPrice
0NaNPave127500
12.0NaN106000
24.0NaN178100
3NaNNaN140000
#取值
inputs,outputs = data.iloc[:,0:2],data.iloc[:,2]
inputs,outputs
(   NumRooms Alley
 0       NaN  Pave
 1       2.0   NaN
 2       4.0   NaN
 3       NaN   NaN,
 0    127500
 1    106000
 2    178100
 3    140000
 Name: Price, dtype: int64)
#均值填充缺失值
inputs = inputs.fillna(inputs.mean())
inputs
NumRoomsAlley
03.0Pave
12.0NaN
24.0NaN
33.0NaN
#one hot encode
inputs = pd.get_dummies(inputs,dummy_na=True)
inputs
NumRoomsAlley_PaveAlley_nan
03.010
12.001
24.001
33.001
1.标量:运算
import torch
#DataFrame转为tensor
X,y =torch.tensor(inputs.values),torch.tensor(outputs.values)
X,y
(tensor([[3., 1., 0.],
         [2., 0., 1.],
         [4., 0., 1.],
         [3., 0., 1.]], dtype=torch.float64),
 tensor([127500, 106000, 178100, 140000]))
2.向量 维度
x = torch.tensor([3.0])
y = torch.tensor([2.0])
x+y,x*y,x/y,x**y
(tensor([5.]), tensor([6.]), tensor([1.5000]), tensor([9.]))
x = torch.arange(4)
x
tensor([0, 1, 2, 3])
len(x)
4
x.shape
torch.Size([4])
x.size()
torch.Size([4])
3.矩阵 矩阵取数、方阵、对称矩阵、转置
A=torch.arange(20).reshape(5,4)
A
tensor([[ 0,  1,  2,  3],
        [ 4,  5,  6,  7],
        [ 8,  9, 10, 11],
        [12, 13, 14, 15],
        [16, 17, 18, 19]])
#转置
A.T
tensor([[ 0,  4,  8, 12, 16],
        [ 1,  5,  9, 13, 17],
        [ 2,  6, 10, 14, 18],
        [ 3,  7, 11, 15, 19]])
x=torch.arange(24).reshape(2,3,4)
x
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]]])
X=torch.arange(24).reshape(4,6)
X
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]])
X*2
tensor([[ 0,  2,  4,  6,  8, 10],
        [12, 14, 16, 18, 20, 22],
        [24, 26, 28, 30, 32, 34],
        [36, 38, 40, 42, 44, 46]])
4.降维:沿轴卷动,求和或平均,非降维求和
#所有元素求和
X.sum()
tensor(276)
#按0轴求和
X_sum_axis0 = X.sum(axis=0)
X_sum_axis0,X_sum_axis0.shape
(tensor([36, 40, 44, 48, 52, 56]), torch.Size([6]))
#按1轴求和
X_sum_axis1 = X.sum(axis=1)
X_sum_axis1,X_sum_axis1.shape
(tensor([ 15,  51,  87, 123]), torch.Size([4]))
#保持原始维度
X_sum_axis1 = X.sum(axis=1,keepdim=True)
X_sum_axis1
tensor([[ 15],
        [ 51],
        [ 87],
        [123]])
#按0轴累加求和
X,X.cumsum(axis=0)
(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]]),
 tensor([[ 0,  1,  2,  3,  4,  5],
         [ 6,  8, 10, 12, 14, 16],
         [18, 21, 24, 27, 30, 33],
         [36, 40, 44, 48, 52, 56]]))
5.点积
#全1
y = torch.ones(4,dtype=torch.float32)
y
tensor([1., 1., 1., 1.])
x = torch.arange(4,dtype=torch.float32)
x
tensor([0., 1., 2., 3.])
#它是向量(即只能是⼀维的张量)的对应位相乘再求和
torch.dot(x,y)
tensor(6.)
6.点积推广
#相当于dot
torch.sum(x*y)
tensor(6.)
7.矩阵乘法 :注意维度
B= torch.ones(6,2,dtype=torch.long)
X.shape,B
(torch.Size([4, 6]),
 tensor([[1, 1],
         [1, 1],
         [1, 1],
         [1, 1],
         [1, 1],
         [1, 1]]))
#矩阵乘法
torch.mm(X,B)
tensor([[ 15,  15],
        [ 51,  51],
        [ 87,  87],
        [123, 123]])
8.范数
# l2范数   sqrt(3**2+(-4)**2)
u = torch.tensor([3.0,-4.0])
torch.norm(u)
tensor(5.)
#l1范数
torch.abs(u).sum(),torch.norm(u,p=1)
(tensor(7.), tensor(7.))
转载请注明:文章转载自 http://www.konglu.com/
本文地址:http://www.konglu.com/it/918586.html
免责声明:

我们致力于保护作者版权,注重分享,被刊用文章【4.pytorch 线性代数基础练习】因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理,本文部分文字与图片资源来自于网络,转载此文是出于传递更多信息之目的,若有来源标注错误或侵犯了您的合法权益,请立即通知我们,情况属实,我们会第一时间予以删除,并同时向您表示歉意,谢谢!

我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2023 成都空麓科技有限公司

ICP备案号:蜀ICP备2023000828号-2