Python之Tensor初探

第一关:

任务描述:

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

本关涉及的代码文件为array2tensor.py,本次的编程任务是补全右侧编辑器Begin至End中间的代码,具体要求如下:
将 numpy.ndarray转成 tensor 类型,并用变量torch_data保存转换后的值;
具体请参见后续测试样例。

代码:

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)

第二关:

任务描述:

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

编程要求:

本关涉及的代码文件为 createTensor.py,本次编程任务是补全右侧编辑器中Begin至End中间的代码,具体要求如下:
创建一个32位有符号的整数张量,sizes大小为(2,2);
具体请参见后续测试样例。

代码:

import torch

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

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

第三关:

任务描述:

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

本关涉及的代码文件为slicing.py,本次编程任务是补全右侧编辑器中Begin至End中间的代码,本关首先声明了一个 tensor变量 t,根据要求对其进行索引切片操作,具体要求如下:
输出正序索引张量 t 起始位置为2,终止位置为5元素;
输出正序索引张量 t 起始位置为-4,终止位置为-2元素;
输出张量 t 起始位置为2,终止位置为6,步长为3的元素。
具体请参见后续测试样例。

代码:

import torch


t = torch.Tensor(range(6))

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

第四关:

任务描述:

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

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

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

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

编程要求:

本关涉及的代码文件为mathOperation.py,本次编程任务是补全右侧编辑器中Begin至End中间的代码,本关首先声明了一个 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 :", end='')
print(torch.round(t))
#输出一个新张量,元素为输入的元素的符号,正为1,负为-1
print("Sign :", end='')
print(torch.sign(t))
#/********** End *********/

第五关:

任务描述:

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

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

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

编程要求:

本关涉及的代码文件为reshape.py,本次编程任务是补全右侧编辑器中Begin至End中间的代码,本关首先声明了一个 tensor变量t,利用view()对其进行维度的扩充,具体要求如下:
首先将张量t的大小转为40*4;
然后在零位置插入尺寸为1的新张量,由此扩充原始张量t。
具体请参见后续测试样例。

代码:

import torch

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

# 将张量 t 的大小转为 40*4,并在零位置插入尺寸为 1 的新维度,由此扩充原始张量 t
t = t.view(1, -1, 4)

# 输出变化后的 t 的大小
print(t.size())

相关知识:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值