精华内容
下载资源
问答
  • cpu负载很高而使用率很低的缘故 可以用#hdparm -tT /dev/sda1 来测试 Timing cached reads: 4624 MB in 2.00 seconds = 2312.97 MB/sec Timing buffered disk reads: 48 MB in 3.05 seconds = ...

    cpu负载很高而使用率很低的缘故

    可以用#hdparm  -tT   /dev/sda1       来测试

     Timing cached reads:   4624 MB in  2.00 seconds = 2312.97 MB/sec
     Timing buffered disk reads:   48 MB in  3.05 seconds =  15.74 MB/sec

    严重低于正常机器 100MB/sec

     



          本文转自hb_fukua  51CTO博客,原文链接:http://blog.51cto.com/2804976/504595,如需转载请自行联系原作者

    展开全文
  • 显卡的GPU利用率(GPU-util) 往往跟代码有关,有更多的io运算,cpu运算就会导致利用率变。比如打印loss, 输出图像,等等 这个时候发现,有一块卡的利用率经常跳到1%,而其他三块卡经常维持在70%以上 2.原因分析 ...

    1.GPU 占用率,利用率

    输入nvidia-smi来观察显卡的GPU内存占用率(Memory-Usage),显卡的GPU利用率(GPU-util)

    GPU内存占用率(Memory-Usage) 往往是由于模型的大小以及batch size的大小,来影响这个指标
    显卡的GPU利用率(GPU-util) 往往跟代码有关,有更多的io运算,cpu运算就会导致利用率变低。比如打印loss, 输出图像,等等

    在这里插入图片描述

    这个时候发现,有一块卡的利用率经常跳到1%,而其他三块卡经常维持在70%以上

    2.原因分析

    当没有设置好CPU的线程数时,Volatile GPU-Util参数是在反复的跳动的,0%,20%,70%,95%,0%。这样停息1-2 秒然后又重复起来。其实是GPU在等待数据从CPU传输过来,当从总线传输到GPU之后,GPU逐渐起计算来,利用率会突然升高,但是GPU的算力很强大,0.5秒就基本能处理完数据,所以利用率接下来又会降下去,等待下一个batch的传入。因此,这个GPU利用率瓶颈在内存带宽和内存介质上以及CPU的性能上面。最好当然就是换更好的四代或者更强大的内存条,配合更好的CPU。

    3.解决方法:

    (1)为了提高利用率,首先要将num_workers(线程数)设置得体,4,8,16是几个常选的几个参数。本人测试过,将num_workers设置的非常大,例如,24,32,等,其效率反而降低,因为模型需要将数据平均分配到几个子线程去进行预处理,分发等数据操作,设高了反而影响效率。当然,线程数设置为1,是单个CPU来进行数据的预处理和传输给GPU,效率也会低。其次,当你的服务器或者电脑的内存较大,性能较好的时候,建议打开pin_memory打开,就省掉了将数据从CPU传入到缓存RAM里面,再给传输到GPU上;为True时是直接映射到GPU的相关内存块上,省掉了一点数据传输时间。

    (2) 另外的一个方法是,在PyTorch这个框架里面,数据加载Dataloader上做更改和优化,包括num_workers(线程数),pin_memory,会提升速度。解决好数据传输的带宽瓶颈和GPU的运算效率低的问题。在TensorFlow下面,也有这个加载数据的设置。

    (3) 修改代码(我遇到的问题)

    每个iteration 都写文件了,这个就会导致cpu 一直运算,GPU 等待

    在这里插入图片描述
    https://blog.csdn.net/qq_32998593/article/details/92849585

    展开全文
  • 2.learning rate 比较,又没有设置任何防止过拟合的机制 解决方法主要包括 1.简化模型,利用现有深度学习手段增加数据(翻转,平移,随机裁剪,imgaug) 2.利用 dropout层 3.利用正则化 2.你犯了错误:没有把...

    损失函数一直在下降,为什么识别率上不去。

    ----------------2021-01-08更新-----------------------

    0.学习率设置太高,一个epoch直接收敛,所以损失不会下降

    比如学利率一开始设置为1,因为下降太快,那么很有可能在一个epoch旧完全收敛。所以看到的validation数值并不下降,第一个epoch就已经处于谷底了。所以如果使用的是系统默认的学习率,最好检查下默认值是什么。

     

    -------------------旧---------------------------------------

    1.最常见的原因:过拟合

    过拟合值得单独开个章节。主要包括

    1.数据量小,网络复杂

    2.learning rate 比较高,又没有设置任何防止过拟合的机制

    解决方法主要包括

    1.简化模型,利用现有深度学习手段增加数据(翻转,平移,随机裁剪,imgaug)

    2.利用 dropout层

    3.利用正则化

    2.你犯了错误:没有把数据规格化

    图片的话,img/255是肯定的

    3.你犯了错误:没有在分验证集之前打乱数据

    因为validation_split操作不会为你shuffle数据,所以如果你的数据前一半标签全是1 ,后一半全是0,validation=0.5。恭喜你,你压根也分不对,你的validation准确率会一直为0.因为你拿所有的正样本训练,却想判断负样本。

    4.你犯了错误,数据和标签没有对上

    有可能再读取自定义的数据库的时候出现问题,导致数据与标注不对应。比如第一张图片用第十张的标注

    5.你的训练数据太少,validation数据太多,类别也太多

    比如4000张训练,1000张validation,300类,这显然就是不合理的。

    遇到这种情况,建议:

        1.使用别的大的数据集预训练

        2.使用DATA augment

        3.可以考虑迁移学习

     

    6.最好使用预训练的权重

    大多数流行的backone比如resnet都有再imagenet数据集上与训练过,那么使用这种权重,比起随即重新训练,显然要可靠不少注意调整学习率。

    7.网络结构有问题

    可以通过使用现在流行的网络(resnet,unet等)替入你的代码,如果结果没有问题,你的结果有问题那么肯定就是你网络结构出问题了。那么可以通过逐层注释掉排查究竟哪里出了问题

    7.1 网络最后一层没有使用正确的激活函数

    比如多类的应该使用softmax

    8.relu后面是softmax

    有一些说法是relu由于对于很大的数值直接复制,所以会对softmax产生不好的影响,从而输出不好的结果。所以可以使用tanh代替relu。

    9.batch normalization需要batch size至少16张

    https://mp.csdn.net/postedit/89456400

    由于做dense prediction图片通常比较大。所以一个batch一般都只有1-2张图片,不建议使用 BN。

    因为BN一般是16张图片以上一起跑。所以吧,如果是BN,那么请用多GPU,16以上的batch size。s

    另外keras TF1.x可能会出问题,https://github.com/keras-team/keras/pull/9965

    10.你犯了错误,你可能设置了一些参数是不可训练的

    在训练语句之前,检查以下你的trainable参数,是否设置了一些参数是不可训练的。这还可能导致你的输出只能是一个值,比如永远预测为标注0,因为你只有一点点的参数,而这并不是一个模型(比如只有100个参数是可以训练的,太简单了,无法模拟)。

     

    11.附送一个调参论文

    Bag of Tricks for Image Classification with Convolutional Neural Networks

    https://arxiv.org/abs/1812.01187

    NLP 独有错误 

    最傻的错误,比如train和val使用了不一样的字典,那效果能好才怪了。。。。

    展开全文
  • 训练模型的准确率很高,但是验证集准确率特别

    万次阅读 多人点赞 2019-06-01 18:11:08
    训练的loss很低,而且正确率已经很高了,但是在验证集上面,loss比较高,而且准确率特别低,还一直不稳定。 产生原因: 将每个类别的数据集中的放在一起,而且数据标签也是很集中的 model.fit(train_data, ...

    训练图的过程如下:

     

    训练结果:

    训练的loss很低,而且正确率已经很高了,但是在验证集上面,loss比较高,而且准确率特别低,还一直不稳定。

     

    产生原因:

    将每个类别的数据集中的放在一起,而且数据标签也是很集中的

    model.fit(train_data, train_label,
              batch_size = 32,
              epochs = 100,
              validation_split = 0.2,
              shuffle = True)

    在module的fit函数里面,虽然有 shuffle ,但是感觉不太对啊,所以还是要提前对数据进行打乱。

     

    解决方法:

    打乱数据,但是注意,在打乱的时候,一定要连标签一起打乱,保证打乱后的数据和标签是一一对应 的。

    np.random.seed(200)
    np.random.shuffle(train_data) 
    np.random.seed(200)
    np.random.shuffle(train_label)
    
    np.random.seed(200)
    np.random.shuffle(test_data) 
    np.random.seed(200)
    np.random.shuffle(test_label)

    解决结果:

    论 shuffle 的重要性!!!

     

    展开全文
  • TensorFlow学习- GPU显存占满而利用率(util)很低原因&提高方法_m0_38064529的博客-CSDN博客 https://blog.csdn.net/m0_38064529/article/details/103168172 参考1: TensorFlow如何提高GPU训练效率和利用率 ...
  • 2.learning rate 比较,又没有设置任何防止过拟合的机制 解决方法主要包括 1.简化模型,利用现有深度学习手段增加数据(翻转,平移,随机裁剪,imgaug) 2.利用 dropout层 3.利用正则化 2.你犯了错误:没有把数据...
  • ![图片说明](https://img-ask.csdn.net/upload/201910/29/1572351226_28414.png) 训练数据2000个 batchsize为20 这个变化是什么规律呀 均方误差曲线图是上升的趋势
  • tensorflow模型,4层cnn 跑出来的结果训练集能达到1,测试集准确率基本保持在0.5左右,二分类 数据有用shuffle, 有dropout,有正则化,learning rate也挺小的。 不知道是什么原因,求解答! ...
  • 使用小语料集训练,测试精准率还行,当语料集达到2000组时,问题来了,训练精准率很高,但测试精准率非常。 小语料集与大语料集测试精准率对比: 测试精准率的让人有点伤心,训练集增多,除了把batch...
  • 用caffenet进行二分类,最后输出的准确率有百分之95,但是得到模型后,输入训练样本进行测试的时候,准确率只有百分之68。这是什么原因
  • 因为batch_norm的两个平移缩放参数在训练的时候没有更新,需要手动更新一下 step = tf.get_variable("step", [], initializer=tf.constant_initializer(0.0), trainable=False) optimizer = tf.train....
  • 碰到常规问题无法解释的CPU使用率情况(比如top 1里显示的CPU使用率很高,但每个进程的使用率很低)时, 首有可能是短时应用导致的问题, 比如: 1. 应用里直接调用了其他二进制程序, 这些程序通常运行时间比较短,通过...
  • 训练集在训练过程中,loss稳步下降,准确率上升,最后能达到97% 验证集准确率没有升高,一直维持在50%左右(二分类问题,随机概率) 测试集准确率57% 在网上搜索可能打的原因: 1.learning rate太小,陷入局部最优 ...
  • LOAD但是CPU和IO都很低问题

    万次阅读 2015-07-13 15:36:31
    使用sar命令查看,CPU和load都不 查看进程状态 top 然后执行shift+o,进入排序页面 键入 w字母(表示按照进程状态排序),回车,然后键入R 猜测由于nfs导致问题,执行:df -h 看到有网络文件...
  • 做了好长的时间的图像分类,用caffe训练的模型正确率很高,但是用单张图片进行测试识别时,效果特别差,检测的出来的几乎都是同一类,查了一些资料,终于找到了解决办法。 原因1:如果训练用了GPU,那么测试的时候...
  • 预处理不一致造成的。 在训练时, 网络应该使用的是pixel mean, 而在使用网络时,在classification.cpp中默认计算的是channel mean.  解决方式: ...在classification.cpp里的setMean方法计算的是图片每个...
  • LOAD但是CPU和IO都很低问题解决

    千次阅读 2014-09-02 18:14:31
    生产环境借用别人机器的CPU LOAD居不下,合
  • 今天在训练灰度图像的时候,发现一个问题就是:caffe训练灰度图像的时候识别率很高,但是在使用matlab接口重新测试的时候识别率却很低。原来在使用caffe的matlab接口测试灰度图像的时候,需要对原图进行一次转置,这...
  • 与测试集等同) 求助师姐,是网络过拟合了,原因可能是没有加正则化 尝试4:加上l2,计算所有weight的l2的和,weight_decay设为0.01 发现loss震荡厉害,查找原因,可能是学习率过大 尝试5:将学习率改为0.0001 ...
  • 发现程序执行的时候,用户使用CPU率,系统占用CPU率,程序执行效率,截图如下: ![图片说明](https://img-ask.csdn.net/upload/201910/23/1571821382_695058.png) 代码多进程部分截图如下: ![图片说明]...
  • 问题如标题 print('Training ------------') # training the model model.fit(X_train, y_train, epochs=8, batch_size=32,) ...19578/19578 [==============================] - 334s 17ms/step - loss: 1.9936 ...
  • 日前,知名IT媒体eWEEK公布了2006年美国IT起薪的调查结果,虽然并非全球也并非针对中国IT业,但美国作为全球IT行业领先的国家,调查结果还是会给我们提供较的参考价值。 【CSDN 报道】日前,知名IT媒体eWEEK公布...
  • 内聚耦合

    千次阅读 2016-09-18 14:54:16
    基本解释  内聚耦合,是软件工程中的概念,是判断设计好坏的标准,主要是面向过程的设计,... 所谓内聚是指一个软件模块是由相关性强的代码组成,只负责一项任务,也就是常说的单一责任原则。 耦合
  • 然而,由于每个BN的均值和方差与旧数据集不一定接近,在Relu处的丢弃的数据量与旧数据集会有大区别,导致后续K+1层接收到的输入和旧数据集的输入范围差别大,后续K+1层的初始权重不能恰当处理这种输入,导致精度...
  • 用gpu服务器训练模型时,发现显存满了,但gpu利用率很低,且周期性变化,比如0-25-45,都不,同样的代码在另一台服务器上,利用率是90多,且模型训练速度也很低,迭代起来一卡一卡的。 在dataloader中增加num_...
  • 类聚耦合

    千次阅读 2009-07-20 00:22:00
    这是软件工程中的概念,是判断设计好坏的标准,主要是面向OO的设计,主要是看类的内聚性是否,偶合度是否首先要知道一个软件是由多个子程序组装而成, 而一个程序由多个模块(方法)构成! “内聚,耦合”主要是...
  • Load很高,CPU使用率很低的诡异情况 第一次碰到这种Case:物理机的Load很高,CPU使用率很低 先看CPU、Load情况 如图一:vmstat显示很有多任务等待排队执行(r)top都能看到Load很高,但是CPU idle 95%以上 这个现象...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 37,500
精华内容 15,000
关键字:

很高很低