pytorch torch.expand和torch.repeat的区别详解
2019-11-05 18:07
2401 查看
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]])
以上就是本文的全部内容,希望对大家的学习有所帮助
您可能感兴趣的文章:
相关文章推荐
- 详解接口和抽象类的区别
- Bind和Eval的区别详解
- [转]Bind和Eval的区别详解
- c++、Java、python对应的编译型语言和解释性语言区别详解
- 【Android四大组件之Service】(二)Android中Service的使用详解和注意点(LocalService),及startService与bindService的区别
- Android中dip、dp、sp、pt和px的区别详解
- Java集合详解三:HashMap、LinkedHashMap、TreeMap、Hashtable的区别与使用
- HTTP详解(3)-http1.0 和http1.1 区别
- HTTP POST GET 请求区别详解
- golang中make和new的区别示例详解
- 详解python深浅拷贝区别
- HTTP POST GET 本质区别详解
- HTTP POST GET 本质区别详解
- Java中Hashtable类与HashMap类的区别详解
- 字节流与字符流的区别详解
- ros::spin() 和 ros::spinOnce() 区别及详解
- LVS的三种模式区别详解
- HTTP POST GET 本质区别详解
- Java中equals和==的区别 (详解)
- cookie 和session 的区别详解