- 博客(47)
- 收藏
- 关注
原创 华为真的遥遥领先了吗?记录华为Ascend卡对于pytorch中aten::isin.Tensor_Tensor_out算子不支持的问题(主要是由于调用torch.isin()方法造成的)
在使用华为的 ModelArts 平台时,我注意到一个关键性能瓶颈,即数据在从 NPU(神经处理单元)传输到 CPU 后,仍然依赖于 CPU 进行计算。这一流程对于大规模模型的推理效率构成了严重影响,特别是在处理复杂任务时。我以 Qwen2.5-Coder-7B 为例,尝试实现冒泡排序算法,结果耗时超过 10 小时,所以华为真的遥遥领先了吗?
2024-10-19 19:35:11
14027
4
原创 介绍一种能自动截图的python代码
博主在做毕业设计的时候总是需要截取自己做的网页的图,但是用各种截图方法(QQ、微信、Ctrl+Alt+S)总是很不方便,因此我就想能不能写一个代码,当我按压键盘某一个键的时候能触发这个截图功能?说干就干,我做了如下思考。编不下去了,其实我没有思考,就直接写了,有一部分也是copy别人的,我只是在上面做了改动,效果是,运行代码后就能保存Svg格式的图和png格式的图。答:用while循环,一直监听是否触发某个事件,一旦触发就执行代码。问:怎么保证我一点击的时候就截图,不点击就不截图呢?
2024-05-28 14:40:49
11674
原创 解决ModuleNotFoundError: No module named ‘yaml‘
报错:ModuleNotFoundError: No module named 'yaml'
2023-11-03 18:27:51
18445
原创 如何把利用paddlepaddle导出的json文件转化为yolo或者voc文件
这两天想偷懒,想让模型先在数据上标一遍,然后我再做修正,主要是图个省事。由于我们的业务主要是利用paddle,模型也是基于paddle推理的,因此即便我对paddle有一万个吐槽但也不得不用它。但在利用paddle保存推理结果文件时,遇到了一个大问题:就是paddle推理出来的所有数据都在同一个json文件,并且导入labelimg中也不能正常的显示到标注的框,不能对数据进行矫正。因此我就想着在代码中间能不能修改某些内容。
2023-09-19 14:26:57
42523
原创 5. 自动求导
⑧ 即使构建函数的计算图需要通过Python控制流(例如,条件、循环或任意函数调用),仍然可以计算得到的变量的梯度。⑥ 在深度学习中,目的不是计算微分矩阵,而是批量中每个样本单独计算的偏导数之和。② 在外面计算y关于x的梯度之前,需要一个地方来存储梯度。④ 通过调用反向传播函数来自动计算y关于x每个分量的梯度。① 例子1是一个线性回归的例子,如下图所示。① b是之前计算的结果,是一个已知的值。⑦ 将某些计算移动到记录的计算图之外。⑤ 计算x的另一个函数。
2023-09-13 11:42:22
45888
原创 小工具——筛选图像小工具
首先要选择两个文件夹,一个用来导入数据,另外一个用来保存数据。导入文件夹,文件夹里面有大量图像,点击键盘右键可以切换到下一张,左键上一张,点击空格可以把这个图像保存到另外一个文件夹中。不过到最后一张的时候可能回异常退出,不过不影响使用所以我就没进行改进了。最近在公司手动筛图片,需要将某些含有检测目标的图像手动筛选出来用于做新模型的测试。我最开始是两个文件夹,来回复制粘贴,后来感觉这种效率太低了,就随手写了一个图像筛查小工具。这里的操作是剪切操作,并非复制操作。随便文件夹是保存的文件。点击3选择保存文件夹。
2023-09-08 14:10:23
49171
原创 一键让你使用录屏
最近在做项目,有时候需要录屏,但是我的操作又很慢,常常就是动辄上分钟计,这哪个评委老师受得了啊。建议把代码放在桌面,这样录的视频也在桌面,便于查找。视频的名字叫test.mp4,录制完成后,按英文状态下的esc或者q键结束。
2023-09-06 12:47:06
50331
原创 三秒教你搞定利用python发送邮件
我之前利用python统计了班级没有交作业的同学,并且一键给他们发邮件。收到了很多人的私信,这里我给大家分享一下如何利用python发送文件。至于授权码的获取方式,可自行搜索,网上教程一大堆,我就不赘述了。
2023-09-06 12:41:02
50284
原创 3. 数据操作、数据预处理
② 如果在后续计算中没有重复使用X,即内存不会过多复制,也可以使用X[:] = X + Y 或 X += Y 来减少操作的内存开销。① 机器学习用的最多的是N维数组,N维数组是机器学习和神经网络的主要数据结构。① 要改变一个张量的形状而不改变元素数量和元素值,可以调用reshape函数。① 可以用[-1]选择最后一个元素,可以用[1:3]选择第二个和第三个元素。① 为了处理缺失的数据,典型的方法包括插值和删除,这里,我们考虑插值。① 可以通过张量的shape属性来访问张量的形状和张量中元素的总数。
2023-08-27 13:11:18
54063
原创 2. 配置版本
( 注意:当 pip install ipykernel 时,不能挂 VNP。② 输入 conda create --name py3.6.3 python=3.6.3 命令,输入 [y]/n 时输入 y,创建 py3.6.3 虚拟环境,它会安装 python3.6.3 到 anaconda3 的 env 目录下。③ 首先确保目前盘和要进入的盘一样,输入 cd D:\11_Anaconda\envs\py3.6.3\Scripts 命令,进入 py3.6.3 目录下的 Scripts 文件夹下。
2023-08-27 12:45:43
53876
原创 1. 深度学习介绍
计算机视觉面对的是图片,图片里面都是一个个像素,像素很难用符号学来解释,所以计算机视觉大部分用概率模型、机器学习来解释。② 感知类似我能看到前面有个屏幕,推理是基于我看到的东西想象未来会发生什么事,根据看到的现象、数据,形成自己的知识,知道所有知识后能进行长远的规划,未来怎么做。② 17年的时候,几乎所有的团队都可以做到5%以内的错误率,基本上可以达到人类在图片识别上的精度了。② IMAGENET是比较大的图片分类数据集,如下图所示,它包括了一千类的自然物体的图片,它大概有一百万张图片。
2023-08-27 12:38:54
54610
原创 15. 查看开源项目
② 如下图所示,Terminal终端运行.py文件时,--变量 后面的值是给变量进行赋值,赋值后再在.py文件中运行。例如 ./datasets/maps 是给前面的dataroot赋值,maps_cyclegan是给前面的name赋值,cycle_gan是给前面的model赋值。Terminal终端命令语句,如果不对该默认变量新写入,直接调用默认的参数;如果对该默认变量新写入,则默认的参数被新写入的参数覆盖。① 像运行Tensorboar一样,在Terminal终端,可以命令运行.py文件。
2023-08-27 11:47:04
54253
原创 14. 完整模型验证套路
训练次数:22200,Loss:0.42121270298957825。训练次数:10000,Loss:0.9259409308433533。训练次数:10300,Loss:0.9383634924888611。训练次数:10500,Loss:0.7797534465789795。训练次数:10600,Loss:0.9295462965965271。训练次数:10700,Loss:0.7535973787307739。训练次数:10800,Loss:0.8077783584594727。
2023-08-27 11:44:20
54320
原创 13. 利用GPU训练
训练次数:1300,Loss:1.6947956085205078。训练次数:1500,Loss:1.8372352123260498。训练次数:1700,Loss:1.6654351949691772。训练次数:1800,Loss:1.9246405363082886。训练次数:1900,Loss:1.7132933139801025。训练次数:2100,Loss:1.4903961420059204。训练次数:2200,Loss:1.4754142761230469。
2023-08-27 11:39:29
54430
原创 12. 完整模型训练套路
对于Dropout,model.eval()是利用到了所有网络连接,即不进行随机舍弃神经元。② tensor的requires_grad的属性默认为False,若一个节点(叶子变量:自己创建的tensor)requires_grad被设置为True,那么所有依赖它的节点requires_grad都为True(即使其他相依赖的tensor的requires_grad = False)在model(test)之前,需要加上model.eval(),否则的话,有输入数据,即使不训练,它也会改变权值。
2023-08-27 11:27:35
54493
原创 11. 网络模型保存与读取
---> 2 model = torch.load("./model/tudui_method1.pth") # 无法直接加载方式一保存的网络结构。② 再运行下面的代码,即下面为第1个代码块运行,无法直接导入网络模型。① 点击 Kernel,再点击 Restart。
2023-08-27 11:07:41
54618
原创 9. 优化器
① 损失函数调用backward方法,就可以调用损失函数的反向传播方法,就可以求出我们需要调节的梯度,我们就可以利用我们的优化器就可以根据梯度对参数进行调整,达到整体误差降低的目的。② 梯度要清零,如果梯度不清零会导致梯度累加。
2023-08-26 16:40:43
44703
原创 8. 损失函数与反向传播
① 反向传播通过梯度来更新参数,使得loss损失最小,如下图所示。② Loss损失函数另一方面为我们更新输出提供一定的依据。① Loss损失函数一方面计算实际输出和目标之间的差距。① L1loss数学公式如下图所示,例子如下下图所示。① MSE损失函数数学公式如下图所示。① 交叉熵损失函数数学公式如下图所示。
2023-08-26 16:34:29
45104
原创 7. 搭建网络
① 在 Anaconda 终端里面,激活py3.6.3环境,再输入 tensorboard --logdir=C:\Users\wangy\Desktop\03CV\logs 命令,将网址赋值浏览器的网址栏,回车,即可查看tensorboard显示日志情况。① 把网络结构放在Sequential里面,好处就是代码写起来比较简介、易懂。② 可以根据神经网络每层的尺寸,根据下图的公式计算出神经网络中的参数。
2023-08-26 16:19:13
44036
原创 6. 激活层
① 在 Anaconda 终端里面,激活py3.6.3环境,再输入 tensorboard --logdir=C:\Users\wangy\Desktop\03CV\logs 命令,将网址赋值浏览器的网址栏,回车,即可查看tensorboard显示日志情况。① inplace为原地替换,若为True,则变量的值被替换。若为False,则会创建一个新变量,将函数处理后的值赋值给新变量,原始变量的值没有修改。6.2 tensorboard显示。
2023-08-26 16:10:10
45153
原创 5. 线性层及其他层
① 在 Anaconda 终端里面,激活py3.6.3环境,再输入 tensorboard --logdir=C:\Users\wangy\Desktop\03CV\logs 命令,将网址赋值浏览器的网址栏,回车,即可查看tensorboard显示日志情况。
2023-08-26 16:05:16
44414
原创 4. 池化层相关概念
① 在 Anaconda 终端里面,激活py3.6.3环境,再输入 tensorboard --logdir=C:\Users\wangy\Desktop\03CV\logs 命令,将网址赋值浏览器的网址栏,回车,即可查看tensorboard显示日志情况。④ 池化使得数据由5 * 5 变为3 * 3,甚至1 * 1的,这样导致计算的参数会大大减小。例如1080P的电影经过池化的转为720P的电影、或360P的电影后,同样的网速下,视频更为不卡。③ Ceil_model为当超出区域时,只取最左上角的值。
2023-08-26 15:56:30
45726
原创 3.卷积层相关概念
① 在 Anaconda 终端里面,激活py3.6.3环境,再输入 tensorboard --logdir=C:\Users\wangy\Desktop\03CV\logs 命令,将网址赋值浏览器的网址栏,回车,即可查看tensorboard显示日志情况。② kernel_size在训练过程中不断调整,定义为3就是3 * 3的卷积核,实际我们在训练神经网络过程中其实就是对kernel_size不断调整。① Conv1d代表一维卷积,Conv2d代表二维卷积,Conv3d代表三维卷积。
2023-08-26 15:50:43
44684
原创 2. 步幅、填充原理
例子4:一个特征图尺寸为6 * 6的输入, 使用3 * 3的卷积核,步幅=2,填充=1,输出的尺寸=(6 + 2 * 1 - 3)/2 + 1 = 2.5 + 1 = 3.5 向下取整=3(降采样:边长减少1/2)。例子2: 一个特征图尺寸为5 * 5的输入,使用3 * 3的卷积核,步幅=1,填充=1,输出的尺寸=(5 + 2 * 1 - 3)/1 + 1 = 5。例子1:一个特征图尺寸为4 * 4的输入,使用3 * 3的卷积核,步幅=1,填充=0,输出的尺寸=(4 - 3)/1 + 1 = 2。
2023-08-26 15:41:18
44203
原创 1. 卷积原理
② 下图为每次滑动移动1格,然后再利用原图与卷积核上的数值进行计算得到缩略图矩阵的数据,如下图右所示。① 卷积核不停的在原图上进行滑动,对应元素相乘再相加。
2023-08-26 15:34:37
45182
原创 手把手教你用python演奏音乐(以富士山下为例)
这两天,我非常无聊,琢磨出了十二平均律,并利用mido库进行编写,实现了利用python演奏音乐。废话不多说了,直接上代码,供诸位大佬把玩。
2023-08-11 16:41:23
60230
5
原创 135.78秒教你在Linux(Jetson nano)中设置python程序开机自启
可以理解为这里面写的就是在终端输入的命令,有时用到sudo命令需要输入密码。所以要想在Jetson nano板子中开开机自启,必须先清除掉密码。PS:由于这篇博客是前几天内容的复盘,所以相关步骤没有截图,请各位大佬海涵。在注释中可填可不填,建议写:gosling123456yyds。在名称中填写start,当然,你也可以写其他的,没所谓的。这样一来,start.sh文件就有了读写权限了。点击添加/Add选项,进入下图所示页面。之后点击保存就OK了。
2023-08-06 10:19:52
65253
2
原创 一分钟让你学会如何在Linux操作系统下取消登陆密码
最近笔者在做一个利用 Jetson nano视觉处理的比赛,要求脱机(电脑)运行,因此我们的程序需要开机自启。在百思不得其解中,我们发现了解决之道。废话不多说,一起来进步吧。
2023-08-06 10:09:56
65718
3
原创 Leetcode(力扣)刷题第9题——回文数(一行代码搞定)
给你一个整数 x ,如果 x 是一个回文整数,返回 true;否则,返回 false。从左向右读, 为 -121。从右向左读, 为 121-。因此它不是一个回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。从右向左读, 为 01。因此它不是一个回文数。例如,121 是回文,而 123 不是。
2023-07-23 18:31:12
73754
原创 Leetcode第70题斐波那契数列
今天在耍leetcode第70题的时候总是提示要么超时,要么空间超了。然后我就很不开心了,抄起数字就推导斐波那契数列通项公式,参考了知乎大神的思路,过程如下:
2023-07-22 21:04:59
74739
原创 30行代码让你轻松玩转Yolov5
突然有个小伙伴私信我,说在搞项目的时候根本不需要那么多烦人的Yolo文件。他问我是否能提供一个简明易懂的Yolo教程。就在今天,他闪亮登场了……
2023-06-26 21:09:31
92477
3
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人