linux共享内存shm详解

linux中/dev目录下一般都是一些设备文件,例如磁盘、内存、摄像头等,其中/dev/shm这个目录是linux下一个利用内存虚拟出来的一个目录,这个目录中的文件都是保存在内存中,而不是磁盘上。其大小是非固定的,即不是预先分配好的内存来存储的。/dev/shm的容量默认最大为内存的一半大小,使用df-h命令可以看到。但它并不会真正的占用这块内存,如果/dev/shm/下没有任何文件,它占用的内存实际上就是0字节。/dev/shm的文件系统为tmpfs,即为临时文件系统shm和内存中的shared部分关联,下面我们做一个实验来看看首先我们执行free命...

阅读全文

opencv读取图片时报错libpng error的解决方法

最近遇到了在使用opencv读取图片的时候报错报错libpngerror:ReadError然后我将图片下载下来,直接双击打开发现该图片已经损坏,那么我尝试在我的代码中添加try...except进行异常的捕获,发现try...except不能捕获该错误import cv2try:    x = cv2.imread("16594318572323.png", -1)    print(x)ex...

阅读全文

pod报错no space left on device的解决方法

查看k8s上有一些POD日志中提示Error:failedtocreateFSwatcher:nospaceleftondevice看到这个错误提示第一时间想到的是是不是磁盘用满了,然后我开始检查机器上的资源,包含CPU,内存,硬盘发现上面检查项均为正常的然后describenode发现节点上的配额还有很多,实际使用已分配的资源都不高,然后我翻找资料,有提示相关的内核方面的问题,需要优化调整fs.inotify.max_user_watches的值sysctl fs.inotify.max_user_watches用上述命...

阅读全文

linux系统日志查看命令journalctl详解

下载linux系统基本都是用systemd启动系统并管理进程journalctl可以查看所有的系统日志文件,由于日志信息量很大,journalctl还提供了各种参数帮助用户更快速的定位到日志信息默认情况下,用户都可以访问自己的日志。对于系统主日志和其他用户的日志,仅限于有权限的用户访问,比如root用户,wheel组和systemd组的用户下面我们来看看journalctl命令的用法journalctl #用来查看所有日志,默认显示本次启动的所有日志journalctl -r #-r参数表示反序输出,从新到旧,默认是从旧...

阅读全文

flask在before_request中添加特定路由到例外(拦截器)

标题可能描述的不太清理,就是例如我在before_request中检测用户登录状态,当用户没有登录就转向/login登录页面,但是这里就有一个问题,当/login登录跳转的页面也会触发before_request,这个时候还没完成登录动作,session也没保存,当然就不是登录状态,所以又转向了/login登录页面,从而造成了死循环,那么我们就需要在before_request请求的方法中添加一些这种特定的路由,对他们进行放行示例代码如下@app.before_requestdef verify_login():  ...

阅读全文

pip下载whl包到本地(离线安装)

最近经常遇到pip安装包非常慢的情况,之前加-i参数来临时更换下载源,pip之前的笔记可以查看这里https://sulao.cn/post/584.html,但是这次情况是下载torch,更换了pip源以后提示什么证书验证的警告,下载依然很慢,所以尝试在其他的机器上来下载whl包,然后拷贝到要安装的机器上例如我下载torch可以用如下方法,可以将torch和依赖的包全部下载到本地pip3 download torch==1.8.2 torchvision==0.9.2 torchaudio==0.8.2 ...

阅读全文

python类特殊方法__setitem__的作用

在python的类中定义了特殊方法__setitem__,这个方法与之对应是之前咱们学习的__getitem__方法,具体的可以查看这里的笔记https://sulao.cn/post/862.html,一个是用key的方式获取,一个是用key的方式来设置对象的值为新值,注意,设置的对象应该是存在,当然这个对象可变时才需要实现这个方法我们还是直接使用上次的例子修改下class TestFunc:    ip = "127.0.0.1"  ...

阅读全文

pytorch中数据并行DP和DDP的区别

在pytorch中数据并行训练涉及到nn.DataParallel和nn.parallel.DistributedDataParallel两个模块,也就是DP和DDP数据并行的含义每个GPU复制一份模型,将一批样本分为多份输入各个模型并行计算当一张GPU可以存储一个模型时,可以采用数据并行得到更准确的梯度或者加速训练,因为求导以及加和都是线性的,数据并行在数学上也有效1.DPDP使用数据并行的方式只需要将原来单卡的module用DP改成多卡model = nn.DataParallel(model)DP基于单机多卡,所有设备...

阅读全文

tensorflow保存和加载PB模型文件

谷歌推荐的保存模型的方式是保存模型为PB文件,它具有语言独立性,可独立运行,封闭的序列化格式,任何语言都可以解析它,它允许其他语言和深度学习框架读取、继续训练和迁移TensorFlow的模型它的主要使用场景是实现创建模型与使用模型的解耦,使得前向推导inference的代码统一另外的好处是保存为PB文件时候,模型的变量都会变成固定的,导致模型的大小会大大减小,适合在手机端运行还有一个就是,真正离线测试使用的时候,PB格式的数据能够保证数据不会更新变动,就是不会进行反馈调节保存称为这种PB文件主要使用tf.SaveModelBuilder类来完成...

阅读全文

深度学习基础Epoch/batchsize/iterations等词解析

神经网络的训练梯度下降法学习率:步长更大=学习率更高误差函数不断减小。如果训练数据过多,无法一次性将所有数据送入计算。现将数据分成几个部分:batch分多个batch,逐一送入计算训练Epoch一个epoch,表示:所有的数据送入网络中,完成了一次前向计算+反向传播的过程。由于一个epoch常常太大,分成几个小的baches.将所有数据迭代训练一次是不够的,需要反复多次才能拟合、收敛。在实际训练时、将所有数据分成多个batch,每次送入一部分数据。使用单个epoch更新权重不够。随着epoch数量的增加,...

阅读全文