torch.copy_()函数介绍

 torch.copy_()函数进行tensor的复制。

 Tensor.copy_(srcnon_blocking=False) → Tensor

官网定义:Copies the elements from src into self tensor and returns self.

1)若采用直接赋值的方式,原来权重的存储指针会指向新得到的权重张量的存储区域;而使用 .copy_() 的话,仅仅是改变原来权重的值,存储区域则不发生改变。copy_()有利于降低运算。

import torch
x = torch.tensor([[1,2], [3,4], [5,6]])
y = torch.rand((3,2)) # [0,1)之间均匀分布
print(y,id(y))
y = x #赋值操作,导致y的地址指向变了
print(y,id(y))
import torch
x = torch.tensor([[1,2], [3,4], [5,6]])
y = torch.rand((3,2)) # [0,1)之间均匀分布
print(y,id(y))
y.copy_(x) # copy_()操作,y的地址指向没变,只是重新赋值。
print(y,id(y))

2)指定区域拷贝

import torch
x = torch.tensor([[1,2], [3,4], [5,6]])

z = torch.rand((4,2))
z[:x.shape[0],:x.shape[1]].copy_(x) #只拷贝x的大小区域
print(z[:x.shape[0],:x.shape[1]].copy_(x))
print(z)

 参考文章《【Pytorch 模型训练 Issue】tensor.copy_() 与 直接赋值(=) 对训练耗时的影响 - 知乎 

你可能感兴趣的:(Pytorch,copy_,torch.copy_,tensor.copy,拷贝)