运行试错合集

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
试错:
在服务器训练好的参数直接被pycharm映射给覆盖了!

在这里插入图片描述
记得把这里取消掉! 如果在py文件中修改了代码,手动上传! 就是上面的upload!

运行结果:
在这里插入图片描述
在这里插入图片描述

运行train的结果

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

评估阶段:
出错了: 但是我改了
在这里插入图片描述

尝试并行! 只是将model改为了并行!但是还是有问题,貌似是自己训练的时候没有使用并行,所以导致!
出错了:
在这里插入图片描述

在这里插入图片描述

出问题了!
在这里插入图片描述
在这里插入图片描述

第二次运行:
如果出现路径问题的话,要edit configuration!

但是在运行期间,出现这样的情况! 不知何解!
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
其中num_words是需要更改的!
在这里插入图片描述

还是报这个错误:

在这里插入图片描述
在这里插入图片描述

出问题了
在这里插入图片描述
改来改去,感觉方向走偏了! 是只有在to_device()的地方才需要修改! 而没有这些的地方是不需要的!
因为它压根不需要你特意放入cuda中!

试来试去,终归不行啊!
三种方法都试了! 包括改成DistributedDataParallel()!
但是突然谋生想法, 为什么我不弄懂它的原理呢! 这样就会懂了!
现在开始懂它的源码! 包括并行的原理!

首先看李沐的书!!

最终发现了问题所在:
就是查看你的模型参数是不是在GPU
代码如下:

for param in next(model.parameters()):print(param, param.device)
print(next(model.parameters()).device)

所有的模型参数都是在CPU上的!!那还训练个锤子!
在这里插入图片描述

在这里插入图片描述
那人家报这个错误也就不离奇了:
在这里插入图片描述

查看DataParallel源码:

在模块级(module level)实现数据并行性。
该容器通过在 batch dimension中分块(每个设备复制一次其他对象)将指定模块的应用程序并行化。在前向传递中,module被复制到每个设备上,每个副本处理输入的一部分。在向后传递过程中,每个副本的梯度被求和到原始模块中。批处理大小应大于实际使用的gpu数量。

警告:
建议使用distributeddataparh列,而不是这个类,来进行多gpu训练,即使只有一个节点。请参阅:使用nn. parallel.distributeddataparparallel来代替multiprocessing或nn。数据并行和分布式数据并行。

允许将任意位置和关键字输入传递给DataParallel,但有些类型需要特殊处理。张量将分散在指定的dim上(默认为0)。元组、列表和dict类型将被浅层复制。其他类型将在不同的线程之间共享,如果在模型的forward pass中写入,则可能被损坏。
并行化的模块必须在device_ids[0]上有它的参数和缓冲区,然后才能运行这个datparallel模块

警告:
在每个forward中,模块被复制到每个设备上,因此任何对forward中正在运行的模块的更新都将丢失。例如,如果模块有一个计数器属性,在每次forward中递增,它将始终保持初始值,因为更新是在forward后销毁的副本上完成的。但是,dataparhles保证设备[0]上的副本将有它的参数和缓冲区与基本并行化模块共享存储。因此,设备[0]上的参数或缓冲区的就地更新将被记录。例如,BatchNorm2d和spectral_norm()依赖于此行为来更新缓冲区。

警告:
在模块及其子模块上定义的前向和后向钩子将被调用len(device_ids)次,每个钩子的输入都位于特定的设备上。特别地,钩子只能保证按照相应设备上操作的正确顺序执行。例如,不能保证通过register_forward_pre_hook()设置的钩子会在所有len(device_ids) forward()调用之前执行,但是每个这样的钩子都会在该设备相应的forward()调用之前执行。

警告:
当module在forward()中返回一个标量(即0维张量)时,包装器将返回一个长度向量,该向量等于数据并行中使用的设备数量,包含来自每个设备的结果。

>>> net = torch.nn.DataParallel(model, device_ids=[0, 1, 2])
>>> output = net(input_var)  # input_var can be on any device, including CPU

人家说输入变量可以在任何设备上,包括CPU!!

Torch.device:

torch.device代表将torch.Tensor分配到的设备的对象。torch.device包含一个设备类型(‘cpu’或‘cuda’)和可选的设备序号。如果设备序号不存在,则为当前设备。如:torch.Tensor用设备构建‘cuda’的结果等同于‘cuda:X’,其中X是torch.cuda.current_device()的结果。

device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")
model.to(device)

这句话需要写的次数等于需要保存GPU上的tensor变量的个数;一般情况下这些tensor变量都是最开始读数据时的tensor变量,后面衍生的变量自然也都在GPU上.
如果是多个GPU
在代码中的使用方法为

device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")
model = Model()
if torch.cuda.device_count() > 1:model = nn.DataParallel(model,device_ids=[0,1,2])

pytorch中model=model.to(device)用法
device=torch.device(“cpu”)代表的使用cpu,而device=torch.device(“cuda”)则代表的使用GPU。
当我们指定了设备之后,就需要将模型加载到相应设备中,此时需要使用model=model.to(device),将模型加载到相应的设备中。将由GPU保存的模型加载到CPU上。

这次再次看这个错误:

在这里插入图片描述
在设备1上的副本1出错了!! 所以我们的代码原理没有问题! 不知道哪里出错了!

再品一下这句话:
在这里插入图片描述
模块必须在cuda:0上有参数和缓存! 但是参数却在cpu上! 那么必须将参数放入到GPU上!
这也说明模型的缓存和参数是独立放入的???

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/476193.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LeetCode 806. 写字符串需要的行数

1. 题目 我们要把给定的字符串 S 从左到右写到每一行上,每一行的最大宽度为100个单位,如果我们在写某个字母的时候会使这行超过了100 个单位,那么我们应该把这个字母写到下一行。 我们给定了一个数组 widths ,这个数组 widths[0…

【转载】揭开硬件中断请求IRQ所有秘密(图解)

转载自:http://news.csdn.net/n/20040517/45868.html IRQ(Interrupt Request)的作用就是在我们所用的电脑中,执行硬件中断请求的动作,用来停止其相关硬件的工作状态。比如我们要打印一份文件,在打印结束时就需要由系统对打印机提出…

(七)DKN:用于新闻推荐的深度知识感知网络

摘要: 背景: 新闻语言是高度浓缩的,充满了知识实体和常识。然而,现有的方法并没有意识到一些外在的知识,也不能充分发现新闻之间潜在的知识层面的联系。因此,推荐给用户的结果仅限于简单的模式&#xff0c…

平面方程(Plane Equation)

平面方程(Plane Equation) 原文链接:http://www.songho.ca/math/plane/plane.html翻译:罗朝辉 (http://www.cnblogs.com/kesalin/)本文遵循“署名-非商业用途-保持一致”创作公用协议平面方程平面上的一点以及垂直于该平面的法线唯一定义了 3D 空间的一个…

【DKN】(三)data_preprogress.py

内容 try: # 以绝对导入的方式导入cofig对象,并获取其{model_name}Config! config getattr(importlib.import_module(config), f"{model_name}Config") except AttributeError:print(f"{model_name} not included!")exit()这里…

mask属性是css3的吗_使用CSS3 mask(蒙版,遮罩)属性实现超酷按钮悬停动画

CSS语言:CSSSCSS确定import url("https://fonts.googleapis.com/css?familyLato:100,300,400");import url("https://fonts.googleapis.com/css?familyRoboto:100");* {margin: 0;padding: 0;box-sizing: border-box;}.header {text-align: c…

Java核心API需要掌握的程度

Java的核心API是非常庞大的,这给开发者来说带来了很大的方便,经常人有评论,java让程序员变傻。 但是一些内容我认为是必须掌握的,否则不可以熟练运用java,也不会使用就很难办了。 1、java.lang包下的80%以上的类的功能的灵活运用。…

主成分分析(Principal Component Analysis,PCA)

文章目录1. 总体主成分分析2. 样本主成分分析3. 主成分分析方法3.1 相关矩阵的特征值分解算法3.2 矩阵奇异值分解算法4. sklearn.decomposition.PCA主成分分析(Principal Component Analysis,PCA)是一种常用的无监督学习方法利用正交变换把由…

【DKN】(二)config.py

class BaseConfig():"""General configurations appiled to all models"""num_epochs 2 #迭代次数num_batches_show_loss 100 # Number of batchs to show lossnum_batches_validate 1000 # Number of batchs to check metrics on valid…

log4net异步写入日志_微信支付万亿日志在Hermes中的实践

导语 | 微信支付日志系统利用 Hermes 来实现日志的全文检索功能,自从接入以来,日志量持续增长。目前单日入库日志量已经突破万亿级,单集群日入库规模也已经突破了万亿,存储规模达 PB 级。本文将介绍微信支付日志系统在 Hermes 上的…

使用Axis2调用Web Service

本文作为使用Axis2创建Web Service的后篇,主要介绍如何使用Axis2调用Web Service。有关准备工作详情请参考前篇的内容。 在Eclipse的Packge Explorer中右键点击New,选择Other项,新建一个Axis2 Code Genrateor向导。点击Next,打开向…

LeetCode 旋转数组 系列

旋转数组系列,多数是排序数组进行了旋转,可以使用二分查找。做一个集合,如还有缺失的,可以留言指出,一起加油! LeetCode 33. 搜索旋转排序数组(二分查找) LeetCode 81. 搜索旋转排…

如何并行运行程序

参考了官方文档, torch.nn.parallel.DataParallel 以及https://zhuanlan.zhihu.com/p/102697821 在运行此DataParallel模块之前,并行化模块必须在device_ids [0]上具有其参数和缓冲区。在执行DataParallel之前,会首先把其模型的参数放在devi…

matlab打开笔记本摄像头_matlab窗口调用摄像头

更改”.m“文件:function varargout untitled1(varargin)% UNTITLED1 MATLAB code for untitled1.fig% UNTITLED1, by itself, creates a new UNTITLED1 or raises the existing% singleton*.%% H UNTITLED1 returns the handle to a new UNTITLED…

session过期后登陆页面跳出iframe页面问题

登陆页面增加javascript:function window.onload(){if(window.parent.length>0)window.parent.locationlocation;}转载于:https://www.cnblogs.com/shenyunjun420/archive/2009/09/29/1576400.html

LeetCode 1143. 最长公共子序列(动态规划)

1. 题目 给定两个字符串 text1 和 text2,返回这两个字符串的最长公共子序列的长度。 一个字符串的 子序列 是指这样一个新的字符串:它是由原字符串在不改变字符的相对顺序的情况下删除某些字符(也可以不删除任何字符)后组成的新…

【DKN】(四)train.py

内容 try: #不用多言, 获得该模块下的model_name函数Model getattr(importlib.import_module(f"model.{model_name}"), model_name)config getattr(importlib.import_module(config), f"{model_name}Config") except AttributeError:print(…

用promise封装ajax_ES6-promise封装AJAX请求

【摘要】ES6-promise封装AJAX请求考必过小编为大家整理了关于ES6-promise封装AJAX请求的信息,希望可以帮助到大家!ES6-promise封装AJAX请求标签:const状态码setreject对象响应状态ISErequest// 接口地址:https://api.apiopen.top/getJoke// 1…

REST和SOAP Web Service的比较(写得非常清晰易懂,转载于此)

本文转载自他人的博客,ArcGIS Server 推出了 对 SOAP 和 REST两种接口(用接口类型也许并不准确)类型的支持,本文非常清晰的比较了SOAP和Rest的区别联系!REST似乎在一夜间兴起了,这可能引起一些争议,反对者可…

LeetCode 1249. 移除无效的括号(栈+set / deque)

1. 题目 给你一个由 (、) 和小写字母组成的字符串 s。 你需要从字符串中删除最少数目的 ‘(’ 或者 ‘)’ (可以删除任意位置的括号),使得剩下的「括号字符串」有效。 请返回任意一个合法字符串。 有效「括号字符串」应当符合以下 任意一条 要求&…