首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

pytorch .detach() .detach_() 和 .data用于切断反向传播的实现

这篇文章主要介绍了pytorch .detach() .detach_() 和 .data用于切断反向传播的实现。...当我们再训练网络的时候可能希望保持一部分的网络参数不变,只对其中一部分的参数进行调整;或者只训练部分分支网络,并不让其梯度对主网络的梯度造成影响,这时候我们就需要使用detach()函数来切断一些分支的反向传播...1、detach()返回一个新的Variable,从当前计算图中分离下来的,但是仍指向原变量的存放位置,不同之处只是requires_grad为false,得到的这个Variable永远不需要计算其梯度...这样我们就会继续使用这个新的Variable进行计算,后面当我们进行反向传播时,到该调用detach()的Variable就会停止,不能再继续向前进行传播源码为:def detach(self):...()和detach_()很像,两个的区别就是detach_()是对本身的更改,detach()则是生成了一个新的variable比如x -> m -> y中如果对m进行detach(),后面如果反悔想还是对原来的计算图进行操作还是可以的但是如果是进行了

6.2K31
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    thread中join和detach的区别

    当thread::detach()函数被调用后,执行的线程从线程对象中被分离,已不再被一个线程对象所表达–这是两个独立的事情。C++线程对象可以被销毁,同时OS执行的线程可以继续。...为了销毁一个C++线程对象,要么join()函数需要被调用(并结束),要么detach()函数被调用。如果一个C++线程对象当销毁时仍然可以被join,异常会被抛出。...在std::thread的析构函数中,std::terminate会被调用如果: 线程没有被Joined(用t.join()) 线程也没有被detached(用t.detach()) 因此,你应该在执行流程到析构函数前总是要么...join,要么detach一个线程。...使用join 除非你需要更灵活并且想要独立地提供一种同步机制来等待线程完成,在这种情况下你应该使用detach 本文翻译自 这里和 这里。

    66630

    【Android 逆向】代码调试器开发 ( 等待进程状态改变 | detach 脱离进程调试 PTRACE_DETACH | 调试中继续运行程序 PTRACE_CONT )

    文章目录 一、等待进程状态改变 二、detach 脱离进程调试 PTRACE_DETACH 三、调试中继续运行程序 PTRACE_CONT 一、等待进程状态改变 ---- 上一篇博客 【Android...waitpid(nPid, &status, WUNTRACED); return PTERR_SUCCESS; } 需要状态返回变化时 , 才需要调用 waitpid() 方法 , 等待进程状态改变 ; 二、detach...脱离进程调试 PTRACE_DETACH ---- 如果需要 detach 脱离调试进程 , 停止调试 , 调用 ptrace 方法 , 传入 PTRACE_DETACH 参数 ; ptrace(PTRACE_DETACH...完整代码 : int CPtrace::detachProc() { // 如果当前没有被调试的进程 , 直接返回 if (m_nPid == 0)return PTERR_SUCCESS; // detach...调试进程 , 如果脱离成功 , 直接返回 if (ptrace(PTRACE_DETACH, m_nPid, NULL, 0) < 0) { return PTERR_DETACH_FAILED

    40110

    UNIX(多线程):07---线程启动、结束,创建线程多法、join,detach

    线程启动、结束,创建线程多法、join,detach 范例演示线程运行的开始和结束 程序运行起来,生成一个进程,该进程所属的主线程开始自动运行。...detach() mythread.detach(); detac():传统多线程程序主线程要等待子线程执行完毕,然后自己再最后退出. detach:分离,也就是主线程不和子线程汇合了,你主线程执行你的...为什么引入detach():我们创建了很多子线程,让主线程逐个等待子线程结束,这种编程方法不太好,所以引入了detach)。...detach() 使线程myprint失去我们的控制。 一旦调用 了detach(), 就不能再用join(),否则系统会报告异常。...joinable() 判断是否可以成功使用join (或者detach ()的。 返回true (可以join或者detach) false(不能join或者detach)。

    1.2K20

    《Linux操作系统编程》 第十章 线程与线程控制: 线程的创建、终止和取消,detach以及线程属性

    理解:线程退出时的清理机制; 掌握:线程的创建、终止和取消,detach以及线程属性。 学习方法 ​ 本章的线程概念较为抽象,需要学生较强的抽象思维能力。多线程编程部分需要学生上机实践。...新栈的内存单元的最低地址,通常是栈的开始位置;对于某些处理器,栈是从高地址向低地址方向伸展的,stackaddr就是栈的结尾 - stacksize:新栈的大小 - 成功返回0,否则返回错误编号 (6) pthread_detach...函数 ▪ 函数原型 - 头文件:pthread.h - int pthread_detach(pthread_t tid); ▪ 参数与返回值 - tid:进入分离状态的线程的ID - 成功返回0,出错返回错误编号

    19210
    领券