前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >torch tensor的repeat和expand

torch tensor的repeat和expand

原创
作者头像
用户4363240
修改2020-01-14 17:48:11
2.1K0
修改2020-01-14 17:48:11
举报
文章被收录于专栏:Vison

一般情况下,如果expand和repeat都能得到目标矩阵,则在不更改目标矩阵元素(只读用法)时使用expand, 其他情况时使用repeat.

知识准备:

numpy.may_share_memory()查看是否指向同一个数据存储的内存地址

torch.Tensor.expand

代码语言:txt
复制
import torch
x = torch.tensor([1, 2,4])
y = x.expand(3, -1)
# In [8]: y
# Out[8]:
# tensor([[1, 2, 4],
#        [1, 2, 4],
#        [1, 2, 4]])

y[1, 0] = 5
# In [10]: y
# Out[10]:
# tensor([[5, 2, 4],
#        [5, 2, 4],
#        [5, 2, 4]])

import numpy as np
np.may_share_memory(y[0,:], y[1,:])
# Out[11]: True

torch.Tensor.expand()不拷贝数据,只是一种view。如果更改expand生成的数据中的某元素,则相关位置元素都会发生改变。help(torch.Tensor.expand)可以了解更多。

torch.Tensor.repeat

代码语言:txt
复制
import torch
x = torch.tensor(1, 2,4)
y = x.repeat(3,2)

# In 17: y
# Out17:
# tensor([1, 2, 4, 1, 2, 4,
# 1, 2, 4, 1, 2, 4,
# 1, 2, 4, 1, 2, 4])

import numpy as np
np.may_share_memory(y[0,:], y[1, :])
# Out[19]: False

y[1, 0] = 5

# In 21: y
# Out21:
# tensor([1, 2, 4, 1, 2, 4,
#            5, 2, 4, 1, 2, 4,
#            1, 2, 4, 1, 2, 4])

torch.Tensor.repeat拷贝数据,与numpy.tail功能类似。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 知识准备:
  • torch.Tensor.expand
  • torch.Tensor.repeat
相关产品与服务
数据保险箱
数据保险箱(Cloud Data Coffer Service,CDCS)为您提供更高安全系数的企业核心数据存储服务。您可以通过自定义过期天数的方法删除数据,避免误删带来的损害,还可以将数据跨地域存储,防止一些不可抗因素导致的数据丢失。数据保险箱支持通过控制台、API 等多样化方式快速简单接入,实现海量数据的存储管理。您可以使用数据保险箱对文件数据进行上传、下载,最终实现数据的安全存储和提取。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档