torch中的copy()和clone()

1、torch中的copy()和clone()

y = torch.Tensor(2,2):copy(x) ---
1

修改y并不改变原来的x

y = x:clone()
1

修改y也不改变x

y = x
1

修改y这个时候就开始改变x了
注意,官网中Returns a clone of a tensor. The memory is copied.内存被复制,也即重新分配了一份内存个y,所以y改变x不改变,对于copy是一样的.copy允许复制的维度不一样,但是元素个数必须是相同的。
对于Python中的深浅拷贝之类的,看连接链接
Python中的拷贝来讲,例子如下

对于数字赋值和列表赋值是有很大区别的

torch中对于直接赋值的这种操作一定要小心,先看看是不是需要直接赋值,还是重新开辟一块内存来存放
2
torch中的type()函数,如果没有传入参数,表示查看Tensor的数据类型
如果传入了参数,表示将Tensor转换为想要的数据类型,数据类型由参数来指定

3 torch中的image的scale函数也是输入参数不同最后的scale方法也是不同的,参考下图说明

4、torch中的Tensor所有操作例如narrow等操作,都是在原来的Tensor的基础上进行的,所以如果想要真正的复制一个Tensor就用copy和clone,如果用narrow这种操作之后经常会导致内存不连续,导致后面很多操作失效,这时候用copy和clone复制一下即可。
---------------------
作者:枯叶蝶KYD
来源:CSDN
原文:https://blog.csdn.net/u013548568/article/details/79145401
版权声明:本文为博主原创文章,转载请附上博文链接!

原文地址:https://www.cnblogs.com/jfdwd/p/11133483.html

时间: 2024-10-12 05:05:07

torch中的copy()和clone()的相关文章

ruby中的复制 dup clone

Ruby内置的方法Object#clone和Object#dup可以用来copy一个对象,两者区别是dup只复制对象的内容,而clone还复制与对象相关联的内容,如singleton method[ruby] view plaincopyprint?s = "cat" def s.upcase "CaT" end s_dup = s.dup s_clone = s.clone s_dup.upcase #=> "CAT" (singleto

iOS中的copy 转载

小结iOS中的copy http://www.jianshu.com/p/5254f1277dba  转载自: 介绍copy和mutableCopy 介绍深拷贝与浅拷贝 block为什么要用copy copy相对于直接赋值的好处 总结 预备知识 : 内存的栈区 : 由编译器自动分配释放, 存放函数的参数值, 局部变量的值等. 其操作方式类似于数据结构中的栈. 内存的堆区 : 一般由程序员分配释放, 若程序员不释放, 程序结束时可能由OS回收. 注意它与数据结构中的堆是两回事, 分配方式倒是类似于

转载:python中的copy模块(浅复制和深复制)

主要是介绍python中的copy模块. copy模块包括创建复合对象(包括列表.元组.字典和用户定义对象的实例)的深浅复制的函数. ########copy(x)########创建新的复合对象并通过引用复制x的成员来创建x的浅复制.更加深层次说,它复制了对象,但对于对象中的元素,依然使用引用.对于内置类型,此函数并不经常使用.而是使用诸如list(x), dict(x), set(x)等调用方式来创建x的浅复制,要知道像这样直接使用类型名显然比使用copy()快很多.但是它们达到的效果是一样

(原)torch中threads的addjob函数使用方法

转载请注明出处: http://www.cnblogs.com/darkknightzh/p/6549452.html 参考网址: https://github.com/torch/threads#examples 1. addjob简单示例 参考网址中给出了torch中threads的addjob函数使用方法: local threads = require 'threads' local nthread = 4 local njob = 10 local msg = "hello from

c#中Marshal.Copy()方法的使用

c#中Marshal.Copy方法的使用 Marshal.copy()方法用来在托管对象(数组)和非托管对象(IntPtr)之间进行内容的复制 函数有很多重载,如下所示: Copy(array<Byte>[]()[], Int32, IntPtr, Int32) 将一维的托管 8 位无符号整数数组中的数据复制到非托管内存指针. Copy(array<Char>[]()[], Int32, IntPtr, Int32) 将数据从一维的托管字符数组复制到非托管内存指针. Copy(ar

OC中的copy

copy的概念 1 Copy的字面意思是"复制"."拷贝",是一个产生副本的过程 2 对象拷贝的目的:要使用某个对象的数据,但是在修改对象的时候不影响原来的对象内容,常见的复制有用一个源文件产生:文件复制 3 作用:复制一个副本文件 特点: 1 修改源文件的内容,不会影响副本文件 2 修改副本文件的内容,不会影响源文件 3 OC中的copy,就是指的对象的拷贝 4 作用:利用一个源对象产生一个副本对象 5 6 修改源对象的属性和行为,不会影响副本对象 7 修改副本对

黑马程序员------oc中的copy

oc中的copy分为深copy和浅copy 深copy的意思是copy后又重新开辟一个内存空间,对copy的资源进行操作,不会影响本来的那份资源.表格中显示哪些为深copy copy前的可变性 可变 不可变 进行copy 不可变 不可变 进行mutablecopy 可变 可变 以上四中情况下,除了开始是不可变,进行copy后,还是不可变的,这种情况下是浅copy外,其他的三种情况都是深copy. 进行copy操作的,除了系统的NSArray/NSMuabltArray.NSDictionary/

C++中实现对象的clone()

在C#中,许多对象自动实现了clone函数,在C++中,要拷贝一个对象,除了自定义一个拷贝构造函数来实现对象复制外,还可以像C#中那样实现一个clone函数,这需要借助编译器实现的一个隐藏拷贝构造函数,这样的做法,更省心. #include "stdafx.h" #include <iostream> class CA { public: int value; CA* clone() const { return new CA( *this );} //仅一个构造函数 CA

Android——编译体系中的 Copy

对andriod系统层进行开发,或者进行移植时,时常需要添加文件到编译体系中,在最终的编译中复制到out中,最后打包成镜像,这里总结一下Copy File 方法,这里以我的 android 4.2.1为例. 如有不对或者有其它的新招,欢迎拍砖留言- 撰写不易,转载请注明出处:http://blog.csdn.net/jscese/article/details/40615801 一.PRODUCT_COPY_FILES : 这个变量就是用来标记Copy操作的,比较常见的形式如下: #jscese