pytorch torch.expand和torch.repeat的区别详解

yipeiwu_com6年前Python基础

1.torch.expand

函数返回张量在某一个维度扩展之后的张量,就是将张量广播到新形状。函数对返回的张量不会分配新内存,即在原始张量上返回只读视图,返回的张量内存是不连续的。类似于numpy中的broadcast_to函数的作用。如果希望张量内存连续,可以调用contiguous函数。

例子:

import torch

x = torch.tensor([1, 2, 3, 4])
xnew = x.expand(2, 4)
print(xnew)

输出:

tensor([[1, 2, 3, 4],
        [1, 2, 3, 4]])

2.torch.repeat

torch.repeat用法类似np.tile,就是将原矩阵横向、纵向地复制。与torch.expand不同的是torch.repeat返回的张量在内存中是连续的。

例子1:

将张量横向的复制

import torch

x = torch.tensor([1, 2, 3])
xnew = x.repeat(1,3)
print(xnew)

输出:

tensor([[1, 2, 3, 1, 2, 3, 1, 2, 3]])

例子2:

将张量纵向的复制

import torch

x = torch.tensor([1, 2, 3])
xnew = x.repeat(3,1)
print(xnew)

输出:

tensor([[1, 2, 3],
        [1, 2, 3],
        [1, 2, 3]])

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持【听图阁-专注于Python设计】。

相关文章

Python中实现单例模式的n种方式和原理

在Python中如何实现单例模式?这可以说是一个经典的Python面试题了。这回我们讲讲实现Python中实现单例模式的n种方式,和它的原理。 什么是单例模式 维基百科 中说: 单例模式...

Django urls.py重构及参数传递详解

Django urls.py重构及参数传递详解

1. 内部重构# 2. 外部重构# website/blog/urls.py website/website/urls.py 3. 两种参数处理方式 # 1. blog/ind...

Python enumerate函数遍历数据对象组合过程解析

这篇文章主要介绍了Python enumerate函数遍历数据对象组合过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 介绍...

Django压缩静态文件的实现方法详析

django静态文件配置原理 静态文件配置就是为了让用户请求时django服务器能找到静态文件返回。 首先要理解几个概念: 媒体文件:用户上传的文件 静态文件:css,js,...

Python 类的继承实例详解

Python 类的继承详解 Python既然是面向对象的,当然支持类的继承,Python实现类的继承比JavaScript简单。 Parent类: class Parent:...