温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

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

发布时间:2020-08-19 23:11:49 来源:脚本之家 阅读:651 作者:MY Qi 栏目:开发技术

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]])

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持亿速云。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI