pytorch每日一学
Fluid_ray
这个作者很懒,什么都没留下…
展开
-
pytorch每日一学49(torch.where())根据t指定条件更改指定tensor中的数值
第49个方法torch.where(condition, x, y) → Tensor此方法是将x中的元素和条件相比,如果符合条件就还等于原来的元素,如果不满足条件的话,那就去y中对应的值,公式为举个例子就清楚了,官方例子如下:>>> x = torch.randn(3, 2)>>> y = torch.ones(3, 2)>>> xtensor([[-0.4620, 0.3139], [ 0.3898, -0.719原创 2020-12-16 11:39:00 · 12037 阅读 · 4 评论 -
pytorch每日一学48(torch.vstack())垂直(行方向)按顺序堆叠张量
第48个方法torch.vstack(tensors, *, out=None) → Tensor此方法就是按垂直方向堆叠,可与torch.hstack()进行对比查看,torch.hstack就是按水平方向堆叠张量。直接看例子,很好理解:>>> a = torch.tensor([1, 2, 3])>>> b = torch.tensor([4, 5, 6])>>> torch.vstack((a,b))tensor([[1, 2,原创 2020-12-15 21:33:50 · 7676 阅读 · 0 评论 -
pytorch每日一学47(torch.unsqueeze())在指定维度上增加一个大小为1的维度
第47个方法torch.unsqueeze(input, dim) → Tensor很明显这个方法是与torch.squeeze()进行相反的操作,torch.squeeze()是将移出tensor中维度为1的维度,而本次的这个方法就是增加一个维度,大小为1。如下所示:指定了给定维度以后,就会在指定维度增加一个维度,大小为1。其实也就是将那个维度上的直接拆开。如果为1的话:如果为0的话则和之前一样,因为0维度本来就只有1个。而本例中如果超过2的话会报错:所以指定维度不能超过给定tens原创 2020-12-15 21:27:25 · 5467 阅读 · 0 评论 -
pytorch每日一学46(torch.unbind())返回给定维度所有切片的元组
第46个方法torch.unbind(input, dim=0) → seq此方法就是将我们的input从dim进行切片,并返回切片的结果,返回的结果里面没有dim这个维度。例如维度为0的时候,如下所示:>>> torch.unbind(torch.tensor([[1, 2, 3],>>> [4, 5, 6],>>> [7, 8,原创 2020-12-13 23:14:03 · 3106 阅读 · 0 评论 -
pytorch每日一学45(torch.transpose())将tensor中对应的维度进行交换
第45个方法torch.transpose(input, dim0, dim1) → Tensor返回一个tensor,此tensor是输入tensor的转置版本,给定的维度dim0和dim1将会被交换。结果tensor和原tensor共享内存,所以改变其中一个的内容也会改变另外一个里面的内容。参数介绍:input:输入tensor。dim0(int):要转换的第一个维度。``dim1(int):要转换的第二个维度。实例如下所示:>>> x = torch.rand原创 2020-12-12 14:52:06 · 2056 阅读 · 0 评论 -
pytorch每日一学44(torch.take())根据索引返回指定索引上的数据集合
第44个方法torch.take(input, index)->Tensor返回一个新的张量,其中的元素是输入元素在给定的索引处,将输入张量视为视为一维张量。结果tensor的形状与索引相同。参数介绍:input:输入tensor。indices:索引接下来看用法:>>> src = torch.tensor([[4, 3, 5], [6, 7, 8]])>>> torch.take(src, t原创 2020-12-11 10:53:28 · 7274 阅读 · 0 评论 -
pytorch每日一学43(torch.t())将二维tensor转置
第43个方法torch.t(input)->tensor此方法非常简单,就是对二维矩阵进行操作,返回它的转置矩阵。看使用方法>>> x = torch.randn(())>>> xtensor(0.1995)>>> torch.t(x)tensor(0.1995)>>> x = torch.randn(3)>>> xtensor([ 2.4320, -0.4608, 0.7702])&原创 2020-12-11 10:39:14 · 1633 阅读 · 0 评论 -
pytorch每日一学42(torch.stack())沿着新维度连接一系列tensor
第42个方法torch.stack(tensors, dim=0, *, out=None) → Tensor此方法的意思是将一系列的tensor沿着新的维度进行连接,首先是参数介绍tensors:要连接的一系列的tensors(要拼接的tensor形状必须相等)。dim:要进行连接的维度。out:连接以后输出的新tensor使用方法如下,第0维是最好理解的,所以我们首先看第0维的连接:其实就是将两个tensor直接拼起来,最后生成的tensor从原来的两个都是二维变成了一原创 2020-12-09 15:44:23 · 1105 阅读 · 0 评论 -
pytorch每日一学41(torch.squeeze())压缩矩阵,移除tensor中大小为1的维度
第41个方法torch.squeeze(input, dim=None, *, out=None)->Tensor此方法的作用是移除tensor中维度大小为1的维度,返回的Tensor和原Tensor共享内存。参数介绍:input:要移除维度为大小1的tensordim:指定要移除的维度,默认为None。out:输出对于一个tensor,形状为(A×1×B×C×1×D)(A×1×B×C×1×D)(A×1×B×C×1×D),经过此方法(dim=None)时,输出的形状为(A×B×C×原创 2020-12-08 15:50:24 · 2196 阅读 · 0 评论 -
pytorch每日一学40(torch.split())将张量拆分为块(tensor的分割)
第40个方法torch.split(tensor, split_size_or_sections, dim=0)此方法和前面的torch.chunk()一样,都是将tensor进行切割的方法,但是这两有什么区别呢?其实我们split方法功能更多样一些。看一下此方法的参数:tensor:要被切割的tensor。split_size_or_sections:当此参数为整数时,意思是将tensor按照每块大小为split_size_or_sections来切割,当此参数为列表时,将此tensor切成原创 2020-12-08 15:17:34 · 14260 阅读 · 0 评论 -
pytorch每日一学39(torch.reshape())更改tensor为指定形状
第39个方法torch.reshape(input, shape) → Tensor此方法的作用是对input进行形状变化,形状变为shape,这个我们是会经常遇到的方法。直接看用法:方法非常的简单,直接将input和形状输入就可以了,但是一定要计算好维度,例如下面6个数字不能组成2x2的矩阵,所以报错。为了避免这种情况,我们可以使用-1数字,使用-1的地方表示系统根据tensor中的元素和你前面给定的一些元素自动填写-1的地方,如下图:总元素为6个,指定形状给了一个2,另一个就是系统自原创 2020-12-06 14:12:17 · 10934 阅读 · 0 评论 -
pytorch每日一学38(torch.nonzero())取出指定tensor指定条件下的元素的索引(位置)
第38个方法torch.nonzero(input, *, out=None, as_tuple=False) → LongTensor or tuple of LongTensors此方法的作用是将我们的input中非零元素的索引返回接下来看参数:input:需要进行返回索引的tensor。out:指定输出as_tuple(bool):此参数有两个取值,True和False,默认为False。值为False时返回一个二维张量,其中每一行都是一个非零值的索引。值为True时返回一维原创 2020-12-05 16:25:47 · 16558 阅读 · 3 评论 -
pytorch每日一学37(torch.narrow())返回输入张量的缩小版
第37个方法torch.narrow(input, dim, start, length) → Tensor此方法返回一个新的张量,它是输入张量的缩小版本。指定的dim维度是从头开始输入+长度。**返回的张量和输入张量共享相同的基础存储。**其实就是返回张量是输入张量的视图。接下来介绍参数:input:需要缩小的张量。dim:指定要缩小的维度。start指定维度开始的位置。length:维度上需要的长度。接下来看例子:>>> x = torch.tensor([原创 2020-12-05 15:40:13 · 627 阅读 · 0 评论 -
pytorch每日一学36(torch.movedim())将tensor指定的维数进行交换
第36个方法torch.movedim(input, source, destination) → Tensor此方法是将input中source维与destination维进行交换,例如原来的维数是(3, 4, 5)经过此方法后可以将维数改为(3, 5, 4)或者(4, 3, 5)都可以。接下来介绍参数:input:要交换维数的tensor。source:源维数,想要进行交换的原来的维数。destination:目标维数,用于与源维数相交换。源维和目标维必须不同。接下来看一个例子:原创 2020-12-05 15:16:06 · 1660 阅读 · 0 评论 -
pytorch每日一学35(torch.masked_select())根据bool矩阵取出tensor中对应位置元素
第35个方法torch.masked_select(input, mask, *, out=None) → Tensor此方法中mask是一个bool矩阵,在input中取出mask中True对应的值。首先介绍参数:input(tensor):需要进行处理的tensor。mask(BoolTensor):包含了二进制掩码,要进行索引的tensor。out:输出的结果tensor(结果为一维tensor)。使用方法如下:>>> x = torch.randn(3, 4)原创 2020-12-02 17:15:39 · 3916 阅读 · 0 评论 -
pytorch每日一学34(torch.index_select())从tensor中按维度取出指定索引的元素
第34个方法torch.index_select(input, dim, index, *, out=None) → Tensor此方法的作用是,根据dim取出input中的index对应的元素,并且返回一个tensor,首先是参数介绍input(Tensor):输入的tensor。dim(int):指定我们要进行索引选择的维度。index(LongTensor):索引。out:输出tensor。使用方法:>>> x = torch.randn(3, 4)>&原创 2020-12-01 15:35:43 · 7014 阅读 · 0 评论 -
pytorch每日一学33(torch.hstack())从水平方向(列方向)叠加向量
第33个方法torch.hstack(tensors, *, out=None) → Tensor此方法应该和前面的torch.dstack()对照起来看,前面的是在深度方向上进行叠加,而这个方法是在水平方向上进行叠加,首先看一下使用参数。tensors:要拼接的tensor序列。out:输出tensor。此方法对一维的tensor沿着第一维进行拼接,而对其它维度的tensor沿着第二维进行拼接。首先来看一个例子:>>> a = torch.tensor([1, 2,原创 2020-11-30 09:38:25 · 5687 阅读 · 0 评论 -
pytorch每日一学32(torch.gather())沿指定维度收集值
第32个方法torch.gather(input, dim, index, *, sparse_grad=False, out=None) → Tensor此方法的作用是沿着指定的维度收集值,首先看参数:input(Tenor):源tensor。dim(int):要收集的维度,不可超过input的维度大小。index(LongTensor):要收集的元素的索引,形状应该和input一样。sparse_grad(bool):如果为True,那么input应该是一个稀疏tensor。out(T原创 2020-11-29 23:32:44 · 1887 阅读 · 1 评论 -
pytorch每日一学31(torch.dstack())将tensor沿深度方向(第三维)按顺序进行叠加
第31个方法torch.dstack(tensors, *, out=None) → Tensor此方法的意思是将tensor沿着深度方向进行叠加,首先介绍参数:tensors:要叠加的tensor,可以是多个,但是叠加的tensor前两个维度形状需要相等。out:所得结果tensor。首先看一个例子:import torcha = torch.rand(2, 3, 4)b = torch.rand(2, 3, 4)c = torch.dstack((a, b))print(a)原创 2020-11-29 22:35:23 · 3512 阅读 · 6 评论 -
pytorch每日一学30(torch.chunk())将一个tensor分为指定数量的块
第29个方法torch.chunk(input, chunks, dim=0) → List of Tensors此方法是将给定的input分为指定数量的块,并返回划分完以后每个块的视图接下来介绍参数:input:将要被划分的tensorchunks:将要被划分的块的数量,注意是数量,所以此参数的类型应该为整型。dim:将要划分tensor的指定的维度,默认为0。接下来看用法:还可以指定维度为1:注意,当a指定维度上的数据数量不能整除chunks时,最后一个块的数量会更小:如原创 2020-11-27 15:46:07 · 2764 阅读 · 1 评论 -
pytorch每日一学29(torch.cat())在给定的维度上对tensor进行拼接
第29个方法torch.cat(tensors, dim=0, *, out=None) → Tensor此方法的意思是对给定的tensor在指定的维度上进行拼接,可以看做是torch.split()和torch.chunk()的逆向操作。参数介绍:tensors:要拼接的tensor,这里应该是多个tensor(此处只要是tensor就可以,包括复数tensor和量化tensor),例如如果将tensor a,b进行拼接,这里的输入应该是(a, b)。dim:从哪个维度上对tensor进行拼原创 2020-11-27 15:32:00 · 2280 阅读 · 2 评论 -
pytorch每日一学28(torch.heaviside())对输入中的每一个元素都进行单位阶跃函数处理并返回结果的tensor
第28个方法torch.heaviside(input, values, * , out=None) → Tensor此方法存在于pytorch1.7.0,1.7.0以下的pytorch中没有此方法。其功能为对输入中的每个元素计算Heaviside阶跃函数。 Heaviside阶跃函数(也就是单位阶跃函数)定义为:各个参数介绍:input:输入tensor。values:输入为0时要使用的值(大小需要和input相等或者为1位)out:输出的tensor。使用方法如下:>&g原创 2020-11-25 15:52:47 · 2698 阅读 · 0 评论 -
pytorch每日一学27(torch.polar())创建极坐标对应的笛卡尔系坐标
第27个方法torch.polar(abs, angle, *, out=None) → Tensor此方法构造一个复数张量,其元素为与绝对值abs和角angle对应的极坐标所对应的笛卡尔坐标。公式如下:参数介绍:abs:复数张量的绝对值。必须为float或double。angle:复数张量的角度。数据类型必须与abs相同。out:如果输入为torch.float32,则必须为torch.complex64。如果输入为torch.float64,则必须为torch.complex128。原创 2020-11-24 18:51:26 · 3665 阅读 · 3 评论 -
pytorch每日一学26(torch.complex())生成复数tensor
第26个方法torch.complex(real, imag, *, out=None) → Tensor此方法其实额前面讲过的一些方法有很大的关系,此方法为创建复数tensor的方法,其中real为实部,imag为虚部,real和imag必须位数相同,如果real和imag同为float32那么生成的complex就为complex64,。参数介绍:real:生成的复数中的实部。imag:生成的复数中的虚部。out:输出的tensor。使用方法如下:>>> real原创 2020-11-23 19:45:33 · 13968 阅读 · 1 评论 -
pytorch每日一学25(torch.dequantize())将量化的向量反量化并返回32位的张量
第25个方法torch.dequantize(tensor) → Tensor此方法结合上节所讲的方法(点击进入此方法)torch.quantize_per_tensor()食用更佳。上节讲的方法是将pytorch中的tensor进行量化,这样可以提高运行效率,节省内存,减少训练时间等。本次的方法是给定一个量化的张量,使用此方法将量化的张量转化回32位的浮点tensor,使用方法如下:import torcha = torch.tensor([1., 4., 2.])b = torch.原创 2020-11-22 14:57:40 · 3111 阅读 · 0 评论 -
pytorch每日一学24(torch.quantize_per_tensor()、torch.quantize_per_channel())使用映射过程将tensor进行量化
第24个方法torch.quantize_per_tensor(input, scale, zero_point, dtype) → Tensortorch.quantize_per_channel(input, scales, zero_points, axis, dtype) → Tensor以上两个方法是将将浮点张量转换为具有给定比例和零点的量化张量。Quantization(量化)介绍 量化是指用于执行计算并以低于浮点精度的位宽存储张量的技术。量化模型对张量使用整数而不是浮点值原创 2020-11-21 16:45:52 · 6007 阅读 · 9 评论 -
pytorch每日一学23(torch.full()、torch.full_like())创造全value的矩阵
第23个方法torch.full(size, fill_value, *, out=None, dtype=None, layout=torch.strided, device=None, requires_grad=False) → Tensortorch.full_like(input, fill_value, *, out=None, dtype=None, layout=torch.strided, device=None, requires_grad=False, memory_forma原创 2020-11-20 17:18:50 · 19381 阅读 · 0 评论 -
pytorch每日一学22(torch.empty()、torch.empty_like()、torch.empty_strided())创建未初始化数据的tensor
第22个方法由于下面这三个方法比较相似,都是创建未初始化的tensor(第三个是创建一个tensor的视图),所以就放到一起来讲:torch.empty(*size, *, out=None, dtype=None, layout=torch.strided, device=None, requires_grad=False, pin_memory=False) → Tensortorch.empty_like(input, *, dtype=None, layout=None, device=No原创 2020-11-19 11:27:31 · 10777 阅读 · 0 评论 -
pytorch每日一学21(torch.eye())创建对角矩阵
第21个方法torch.eye(n, m=None, *, out=None, dtype=None, layout=torch.strided, device=None, requires_grad=False) → Tensor创建一个二维矩阵m×nm\times nm×n,对角全为1,其它都为0,其实就是对角矩阵。接下来介绍参数:n:行的数量。m:列的数量,默认为n。out:输出的tensor。dtype:创建tensor的数据类型,如果为None,使用默认类型,可以使用torc原创 2020-11-18 14:54:31 · 13931 阅读 · 1 评论 -
pytorch每日一学20(torch.arange()、torch.range()、torch.linespace()、torch.logspace())根据步长创造一维tensor
第20学此次学习所有的根据步长创建一维tensor的几个方法,因为基本相似,所以把他们都放在一起,并进行比较。torch.arange(start=0, end, step=1, *, out=None, dtype=None, layout=torch.strided, device=None, requires_grad=False) → Tensortorch.range(start=0, end, step=1, *, out=None, dtype=None, layout=torch原创 2020-11-17 15:41:12 · 16657 阅读 · 2 评论 -
pytorch每日一学19(torch.ones()与torch.ones_like())创建全为1的tensor
第19个方法其实接下来这两个方法和我前面的torch.zeros()和torch.zeros_like()是完全相似的,只是一个创建全1,一个创建全0,所以大家可以仿照前面即可。torch.ones(*size, *, out=None, dtype=None, layout=torch.strided, device=None,requires_grad=False)->Tensortorch.ones_like(input, *, dtype=None, layout=None, dev原创 2020-11-16 21:44:08 · 13408 阅读 · 0 评论 -
pytorch每日一学18(torch.zeros_like())创建与指定tensor形状相等的全0tensor
第18个方法torch.zeros_like(input, *, dtype=None, layout=None, device=None, requires_grad=False, memory_format=torch.preserve_format)—>tensor此方法返回一个与input形状相等的,并且用标量值填充0填充的全0tensor。torch.zeros_like(input)与torch.zeros(input.size(), dtype=input.dtype, lay原创 2020-11-16 09:09:46 · 5466 阅读 · 0 评论 -
pytorch每日一学17(torch.zeros())
第17个方法torch.zeros(*size, *, out=None, dtype=None, layout=torch.strided, device=None, requires_grad=False)返回一个由标量0填充的张量,它的形状由size决定,例如>>> torch.zeros(2, 3)tensor([[ 0., 0., 0.], [ 0., 0., 0.]])>>> torch.zeros(5)tensor原创 2020-11-15 15:40:03 · 10047 阅读 · 0 评论 -
pytorch每日一学16(torch.from_numpy())将numpy转化为tensor
第16个方法torch.from_numpy(ndarray)此方法非常的直观,就是将一个numpy.ndarray转化为tensor。注意,返回的tensor和原来的ndarray共享内存,更改tensor也会更改ndarray。并且返回的tensor不能调整大小。目前能接受的ndarrays类型有numpy.float64, numpy.float32, numpy.float16, numpy.complex64, numpy.complex128, numpy.int64, numpy原创 2020-11-15 15:28:33 · 1250 阅读 · 1 评论 -
pytorch每日一学15(torch.as_strided())根据步长创建一个现有tensor的视图
第15个方法torch.as_strided(input, size, stride, storage_offset=0)—>Tensor此方法是根据现有tensor以及给定的步长来创建一个视图(类型仍然为tensor)。视图 视图是指创建一个方便查看的东西,与原数据共享内存,它并不占用内存,也不存储数据,只是将原有的数据进行整理,显示其中部分内容或者进行重排序后显示出来等等。接下来介绍此方法,首先看一个示例:这样创建出来的b就是a的一个视图,可以发现,b中的元素都是a中的元素,原创 2020-11-13 11:20:49 · 5029 阅读 · 2 评论 -
pytorch每日一学14(torch.as_tensor())将其它类型转化为tensor
第14个方法torch.as_tenso(data, dtype=None, device=None)->Tensor 这个方法还是比较直观地,将数据转化为tensor,这些数据可以是( list, tuple, NumPy ndarray, scalar, and other types.)等等,所以这个方法还是挺有用的。接下来介绍参数:data:tensor的初始化数据。可以是 list, tuple, NumPy ndarray, scalar, and other types。原创 2020-11-12 17:23:58 · 24401 阅读 · 4 评论 -
pytorch每日一学13(torch.spares_coo_tensor())创建稀疏矩阵
第13个方法torch.spares_coo_tensor(indices, values, siez=None,*, dtype=None, requires_grad=False)->Tensor此方法的意思是创建一个Coordinate(COO) 格式的稀疏矩阵,返回值也就h是一个tensor稀疏矩阵指矩阵中的大多数元素的值都为0Coordinate(COO)格式的稀疏矩阵这是非常简单的一种方式,使用一个三元组来表示矩阵中的一个非0数,三元组分别表示元素(所在行,所在列,元素原创 2020-11-11 19:55:56 · 7234 阅读 · 0 评论 -
pytorch每日一学12(torch.tensor())tensor的创建
第12个方法torch.tensor(data, *, dtype=None, device=None, requires_grad=False, pin_memory=False)此方法用于创建pytorch中的tensor创建,此方法使用data构建并返回一个tensor。使用方法如下:import torcha = torch.tensor([2, 3, 5])此时a就是一个具有值[2, 3, 5]的tensor。创建浮点tensor使用import torcha =原创 2020-11-10 17:13:19 · 866 阅读 · 0 评论 -
pytorch每日一学11(torch.set_flush_denormal(mode))
第11个方法torch.set_flush_denormal(mode)禁用 CPU 上的非正常浮点数。如果您的系统支持刷新非正规数并且已成功配置刷新非正规模式,则返回True。 set_flush_denormal() 仅在支持 SSE3 的 x86 架构上受支持。参数mode控制是否启用冲洗非正常模式。例子如下:>>> torch.set_flush_denormal(True)True>>> torch.tensor([1e-323],原创 2020-11-09 15:49:13 · 896 阅读 · 2 评论 -
pytorch每日一学10(torch.set_printoptions())更改打印设置
第10个方法torch.set_printoptions(precision=None, threshold=None, edgeitems=None, linewidth=None, profile=None, sci_mode=None) 这个方法就要复杂一些了,这个方法是来修改pytorch中的打印选项的,就是使用print打印tensor时,我们显示的元素精度,最多显示元素个数等一系列的有关操作的选项,接下来分别介绍各个参数的作用。precision=None,此参数的意思是显示浮点te原创 2020-11-08 15:34:29 · 10925 阅读 · 5 评论