pytorch基本数据操作 tensor基本操作

使用pytorch框架写深度学习程序,总是会对数据进行各种各样的操作,本文从给出了实际可运行的数据操作代码,tensor创建,tensor形状,两个tensor运算,tensor与numpy数据的互相转换。
代码由许多的test组成,都是单独可运行的。程序入口在下面的main。

import torch

#基本属性
def test_base():
    t_data=torch.zeros((3,4))
    help(torch.numel)
    print(t_data.shape)#形状
    print(t_data.size())#与shape一样
    print(t_data.numel())#元素数量
    print('t_data.sum()',t_data.sum())#所有元素求和
def test_tensor_calculate():
    x=torch.tensor([1.0,2,4,8])
    y=torch.tensor([2,2,2,2])
    print('x',x)
    print('y',y)
    print('x+y',x+y)
    print('x-y',x-y)
    print('x*y',x*y)
    print('x/y',x/y)
    print('x**y',x**y) # 对应元素幂运算
    print('torch.exp(x)',torch.exp(x)) #e的指数幂


def test_two_tensor_calculate():
    X=torch.arange(12,dtype=torch.float32).reshape(3,4)
    Y=torch.ones((3,4),dtype=torch.float32)
    print('X',X)
    print('Y',Y)
    print('torch.cat((X,Y),dim=0)',torch.cat((X,Y),dim=0)) # 0维度拼接  (3,4) (3,4) -> (6,4)
    print('torch.cat((X,Y),dim=1)',torch.cat((X,Y),dim=1)) # 1维度拼接  (3,4) (3,4) -> (3,8)
    print('X==Y',X==Y) #逻辑与

#广播
def test_broadcast():
    a=torch.arange(3).reshape((3,1))
    b=torch.arange(2).reshape((1,2))
    print('a',a)
    print('b',b)
    print('a+b',a+b)# a形状 3,1   b形状 1,2    a,b扩充为 3,2

def test_cut():
    X=torch.arange(12).reshape(3,4)
    print('X',X)
    print('X[-1]',X[-1])
    print('X[1:3]',X[1:3])
    print('X[1,2:]',X[1,2:])

    X[0:2,1:]=torch.tensor([[6,6,6],[7,7,7]]) #给指定区域赋值
    print('new X',X)

#避免重复分配内存的小方法
def test_save_memory():
    data=torch.zeros((5,10))
    data_x=torch.randn((5,10))
    data_y = torch.randn((5, 10))
    print(id(data))
    data[:,:]=data_x+data_y
    #data=data_x+data_y    #这个让id改变  说明重复分配了内存
    print(id(data))

#改类型
def test_change_type():
    import numpy as np
    X=torch.arange(3,4)
    data_np=X.numpy()
    data_tensor=torch.tensor(data_np)
    print('type(data_np)',type(data_np))
    print('type(data_np)',type(data_tensor))
if __name__ == '__main__':
    test_base()
    test_tensor_calculate()
    test_two_tensor_calculate()
    test_broadcast()
    test_cut()
    test_save_memory()
    test_change_type()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

会写代码的孙悟空

赠人玫瑰 手有余香

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值