Pytorch 之Tensor 初探

目录

  • 第1关:Numpy桥
  • 第2关:Tensor 创建
  • 第3关:Tensor 切片及索引
  • 第4关:数学运算
  • 第5关:Reshape

第1关:Numpy桥

本关任务:

程序中将提供一个numpy.ndarray类型的变量np_data,利用下文所介绍的from_numpy 方法,转换为对应的 tensor 类型。

import torch
import numpy as np

def a2t():
    np_data = np.array([[1, 2],[3,4]])
  
 #/********** Begin *********/
#将np_data转为对应的tensor,赋给变量torch_data
    torch_data = torch.from_numpy(np_data)


#/********** End *********/
    return(torch_data)

第2关:Tensor 创建

本关卡主要介绍张量 tensor 创建的多种方法,要求同学们体会不同数据类型的差异。

本关任务:

一个张量tensor可以利用输入其行数和列数进行构建,也可以利用 Python 的list构建,按照程序相关的提示,创建一个32位有符号的整数张量。

import torch

def create():
    #/********** Begin *********/
    #创建一个32位有符号的整数张量t
    t = torch.IntTensor(2,2)

    #/********** End *********/
    return t

第3关:Tensor 切片及索引

本关希望同学们掌握张量的切片、索引操作,便于对数据进行处理和分析,提取出用户感兴趣的数据。

本关任务:本关声明了一个 tensor变量t,根据要求对其进行索引切片操作,实现正确输出。其中,涉及到正序索引、逆序索引,步长为3的索引操作。

import torch


t = torch.Tensor(range(6))
#/********** Begin *********/
#输出正序索引张量 t起始位置为2,终止位置为5元素
print("Inverted indexing :{}".format(t[2:5]))
#输出正序索引张量t 起始位置为-4,终止位置为-2元素
print("Negative indexing :{}".format(t[-4:-2]))
#输出张量 t起始位置为2,终止位置为6,步长为3的元素
print("Slicing :{}".format(t[2:6:3]))
#/********** End *********/

第4关:数学运算

本关要求同学们掌握,张量基本的数学运算操作,便于对数据进行进一步的处理和分析。

本关任务:本关声明了一个 tensor变量t,根据要求对其进行数学操作,从而掌握张量相关的数学函数,如开平方根,四舍五入等,要求实现正确输出。

输出一个新张量,元素为输入的元素四舍五入到最接近的整数;

输出一个新张量,元素为输入的元素的符号,正为 1,负为-1。

import torch

t = torch.Tensor([[2.4,-5.6,8.6,2.1,4],[3.5,-9.3,6.7,-5,4.23]])
#/********** Begin *********/
#输出一个新张量,元素为输入的元素四舍五入到最接近的整数
print("Round :{}".format(torch.round(t)))
#输出一个新张量,元素为输入的元素的符号,正为1,负为-1
print("Sign :{}".format(torch.sign(t)))
#/********** End *********/

第5关:Reshape

在进行数据处理时,由于不同的需求,往往需要我们对残缺的数据进行扩充,或为了便于处理而进行转置。

本关介绍了利用view() 方法,返回具有相同数据但大小不同的新张量,从而达到了 reshape 的作用;同时利用transpose ()使给定的维度dim0和dim1被交换。

本关任务:本关声明了一个 tensor变量t,利用view()对其进行维度的转换,并在零位置插入尺寸为1的新张量,由此扩充原始张量t。

import torch

t = torch.randn(2, 10, 8)

#/********** Begin *********/
# 将张量`t`的大小转为`40*4`,并在零位置插入尺寸为`1`的新张量,由此扩充原始张量`t`
#输出变化后的 t
t = t.view(40,4).unsqueeze(1)
print(t.transpose(0,1).size())
#/********** End *********/

你可能感兴趣的:(人工智能,pytorch,python,深度学习)