@[TOC]pytorch作业(第1周第1节)
pytorch作业(第1周第1节)
1. 张量与矩阵、向量、标量的关系是怎么样的?
答:
tensor是pytorch最基本的操作对象,表示的是一个多维的矩阵。
tensor与numpy相对应,可与numpy的ndarray相互转换。但pytorch可以再GPU上运行,ndarray只能在CPU上运行。
张量(tensor)是就是神经网络里的数组,张量与“列表”和“数组”之间的区别就是在于:
tensor可以轻易地进行卷积,激活,上下采样,微分求导等操作,而numpy数组就不行,普通的数组要先转化为tensor格式才行,列表也是这个道理。所以为了其实功能的简单实现,得先将数组或列表转化为tensor格式。
另外:
相同:
tensor内部的数据类型为ndarray类型。
区别:
tensor可以有加速器内存(如GPU)支持,既可以在CPU上运行也可以在GPU上运行。ndarray只能在CPU上运行。
ndarray在CPU上运行,因此可以改变其数值。tensor的值可以驻留在GPU上加速,GPU不具有改变元素值的能力,因此tensor的值不可以改变。
补充:
张量(tensor):可以表示0阶到n阶的数组:
• 0阶张量(标量):单独的一个数
• 1阶张量(向量):一维数组
• 2阶张量(矩阵):二维数组
• n阶张量(张量):n维数组
•标量是0阶张量,向量是一阶张量。举例:
•标量就是知道棍子的长度,但是你不会知道棍子指向哪儿。
•向量就是不但知道棍子的长度,还知道棍子指向前面还是后面。
•张量就是不但知道棍子的长度,也知道棍子指向前面还是后面,还能知道这棍子又向上/下和左/右偏转了多少。
参考网址:
-
https://www.cnblogs.com/icmzn/p/11176298.html
-
https://blog.youkuaiyun.com/weixin_40744639/article/details/100837142
2. Variable“赋予”张量什么功能?
答:
0.4.0 版本后Variable已并入Tensor
Variable是torch.autograd中的数据类型,主要用于封装Tensor:
data: 被包装的Tensor
grad: data的梯度
grad_fn: 创建Tensor的Function,是自动求导的关键
requires_grad:指示是否需要梯度
is_leaf:指示是否叶子结点
##3. 采用torch.from.numpy创建张量,并打印查看ndarray和张量数据的地址:
答:
import torch
import numpy as np
arr = np.array(((1,2,3),(4,5,6)))
tensorA = torch.from_numpy(arr)
print("arr的值是:{}\n 数据类型是:{}\n 地址是:{}".format(arr, type(arr), id(arr)))
print("****** 我是分割线 ******")
print("tensorA:{}\n 数据类型是:{}\n 地址是:{}".format(tensorA, type(tensorA),id(tensorA)))
显示结果:
arr的值是:[[1 2 3]
[4 5 6]]
数据类型是:<class 'numpy.ndarray'>
地址是:2423848714128
****** 我是分割线 ****