- 博客(37)
- 资源 (1)
- 收藏
- 关注
原创 秋招企业面经
牛客 岁月如歌(关注)算法:回文子串,二叉树寻找最小路径(回溯比较简单)。跳楼梯八股:delete会把内存还给操作系统吗?进程调用delete或者free释放资源后,实际上是将该内存块标记为可用,并交还给堆管理器。这些资源归还给了这个程序所申请到的堆管理器,堆管理器可以选择将这个内存块重新分配给后续的malloc或new调用,而不必立即将它归还给操作系统。虚拟内存和物理内存虚拟内存的执行逻辑(自己理解):当 CPU 访问一个虚拟地址时,MMU 接收到该虚拟地址,并负责将其转换为对应的物理地址。
2024-03-22 16:05:31
1153
1
原创 设计模式-单例,工厂,抽象工厂,装饰器,桥接,策略,责任链
它们通过调用被装饰对象的操作,并在其前后进行额外的操作,从而实现装饰的效果。饿汉式适用于实例创建开销较小的情况,懒汉式适用于实例创建开销较大的情况,双重检查锁适用于需要延迟初始化且对性能要求较高的情况,静态内部类适用于大多数情况下。是一种结构型设计模式,它允许你在不修改已有对象的情况下,通过将对象包装在装饰器类中,动态地添加额外的行为和责任。4.创建具体工厂类(Concrete Factory Classes):对于每种产品,创建一个具体的工厂类,实现工厂接口,并在工厂方法中实例化具体的产品对象。
2023-06-13 14:55:56
337
原创 C++多线程和线程池
1.join()和detach()创建的新线程必须被正确的join()和detach()--->join()后主线程将被阻塞等待新线程执行完毕,不然主线程结束(进程结束,内存释放,释放资源),子线程仍然在后台运行,可能访问非法资源。detach()后,就把新线程理解成一个新的进程就可以了。2.std::async和std::futurestd::async 是一个简单易用的异步调用函数,它可以创建一个异步的任务(在里面开辟线程或者不开辟),返回一个 std::future 对象。
2023-04-02 16:55:08
592
原创 YOLOX损失函数详细解释-------------(供自己学习使用)
1.这部分代码,看了比较长时间。原因是simOTA动态匹配正样本的部分花费太多时间2.文章思想部分借鉴了很多大佬3.代码部分直接看的Bubbliiing佬4.我只记录我看懂的部分,博客写的不好轻喷,欢迎指正Y写在前面 YOLOX的网络输出结果分别为:1.(bachsize,5+num_classes,80,80)2.(bachsize,5+num_classes,40,40)3.(bachsize,5+num_classes,20,20)simOTA动态匹配正样...
2022-04-08 17:05:26
7100
2
原创 YOLOv4损失函数详细解释---------(供自己学习使用)
1.这部分代码,看了比较长时间。原因是以前一直不懂目标检测,感觉一学就废2.文章思想部分借鉴了很多大佬3.代码部分直接看的Bubbliiing佬4.我只记录我看懂的部分,博客写的不好轻喷,欢迎指正 def get_target(self, l, targets, anchors, in_h, in_w): #-----------------------------------------------------# # 计算一共有多少张图..
2022-03-29 20:30:10
3973
原创 YOLOv4损失函数
import torchimport torch.nn as nnimport mathimport numpy as npclass YOLOLoss(nn.Module): def __init__(self, anchors, num_classes, input_shape, cuda, anchors_mask = [[6,7,8], [3,4,5], [0,1,2]], label_smoothing = 0): super(YOLOLoss, self)._.
2022-03-23 20:46:47
634
原创 super关键字
super并不是调用父类的方法,而是按照顺序调MRO里面的类class A: def __init__(self): self.n = 2 def add(self, m): print('self is {0} @A.add'.format(self)) self.n += mclass B(A): def __init__(self): self.n = 3 def add(self, m):
2022-01-05 11:50:48
299
原创 FPN网络理解
1.什么是FPN fpn设计动机:1.高层特征向低层特征融合,增加低层特征表达能力,提升性能 2.不同尺度的目标可以分配到不同层预测,达到分而治之。fpn设计细节:1*1的卷积是让最左侧的三个特征图的通道保持一致,从而可以进行特征融合2.FPN的功效被夸大了其实,fpn真正起作用的是分而治之的策略,特征融合的作用其实很有限,此外fpn存在消耗大量显存,降低推理速度。3....
2021-12-23 17:34:58
3756
1
原创 爬虫笔记六------BeautifulSoup
BeautifulSoup是将复杂的HTML文档转换成一个复杂的树形结构,每个节点都是python对象,周游的节点可以归纳为四种Tag:标签及其类容,不过只能拿到第一个找到的对象Navigablestring:拿到标签里面的类容BeautifulSoup:拿到整个文档comment:拿到注释from bs4 import BeautifulSoupfile = open("./baidu.html","rb")html = file.read().decode("utf-8")b..
2021-11-28 16:03:24
443
原创 爬虫学习笔记五-----urllib
指定URL,用于获取网业务数据-----------给网页就能爬urlopen:使用urlopen这个方法将响应的网页封装成对象,即向网站发起请求并获取响应import urllib.request,urllib.error #指定URL,用于获取网业务数据-----------给网页就能爬response = urllib.request.urlopen('https://www.baidu.com/')#使用urlopen这个方法将响应的网页封装成对象print(res.
2021-11-28 15:36:10
225
原创 爬虫学习笔记四------构建流程
爬虫过程中常见的一些需要使用的包from bs4 import BeautifulSoup #进行网页解析,获取数据--------爬完网页对数据进行拆分import re #用于正则表达式,进行文字匹配-------进行数据的提炼import urllib.request,urllib.error#指定URL,用于获取网业务数据-----------给网页就能爬import xlwt#用于进行excel操作----------------存excelimport sqlite3#.
2021-11-28 15:09:59
451
原创 爬虫学习笔记三-----准备工作
从网页上能发现的东西:1.Response Headers:这部分是我们发给服务器的,告诉服务器返回给我们的类容应该适配什么样的条件(在这里,我们的很多消息都会告诉服务器)2.Cookie:服务器标识我们每一台计算机的登录信息或者一些行为信息而保存在本地的类容3.User-Agent:表明我们是什么版本的浏览器,这个部分我们的爬虫程序一般需要把自己伪装成普通的浏览器编码规范:1.一般的python程序的第一行需要加入#coding = UTF-8:从而保证代码中可以有中文.
2021-11-28 09:38:54
312
原创 爬虫学习笔记2-异常的处理
异常的操作宗旨就是:异常操作你可以不执行,但是你不能以崩溃的形式进行退出异常捕获的思路就是try里面的某一行语句如果出现异常,try里面的该语句的后面几行就不会再执行,如果捕获的异常属于except里面的异常错误,会执行except下面的语句。finally里面的语句一定会执行。如果不进行异常的处理就会进行报错而崩溃退出print('---test1----')f = open("123.txt")f.readlines()f.close()可以对上面发生的异常进...
2021-11-26 21:27:41
202
原创 爬虫学习笔记1---文件的读写
读写文件注意事项:1.以w的方式进行文件操作的时候,如果没有该文件会进行自动创建2.对文件进行操作的时候记得进行关闭3进行文件读取的时候每次读取都会在上一个代码段读取的终点位置进行读取#以写的方式打开文件f = open("text.txt",'w')f.write("hello world")f.close()#对文件进行读取操作,每次读完下一次都会从上次读完的位置进行计算f = open("text.txt",'r')content = f.re...
2021-11-26 20:57:18
247
原创 python---列表(list),元组(Tuples),字典(dict),集合(sets)
列表(list):1.列表是包含在【】里面的元素集合2.列表里面的元素数量,元素类型是任意的,并且可以重复3.列表里面的元素是有顺序的,可以通过下标得到method方法:1.len()方法得到列表的集合len(list)2.max,min可以得到列表中的最值max(list)3.列表是可串联化的list1+list2 4.列表的嵌套【1,2,3【4,5,6】】:list【3】【0】=45.list.append():添加单个元素放在列表末尾----l...
2021-11-24 16:55:19
983
原创 pytorch学习笔记----完整的训练套路
注意事项:1在训练的过重中喜欢将网络模型单独放在一个model.py文件里面,在训练脚本进行训练的时候只需要导入这个.py文件就可以了。除此之外,在模型脚本里面可以进行一定程度上的运行,防止网络出现问题。2.训练套路:下载数据集----》加载数据集------》定义网络模型-----》定义损失函数-----》定义学习率-------》定义优化器(可以搞个tensorboard)------>在epoch里面进行训练3.每进行100次迭代的时候可以打印下损失函数值,并且...
2021-11-23 22:27:44
524
原创 pytorch学习笔记-----网络模型的保存和读取
模型的保存是调用torch的save方法,一共有两种保存方式import torchimport torchvision#模型的保存#使用现有的网络模型-》假装得到一个自己的模型vgg16 = torchvision.models.vgg16()#保存方式1,这种方式不仅保存了网络训练的参数,还保存了网络的结构torch.save(vgg16,"vgg16_method1.pth")#保存方式2,这种方式仅仅保存了网络训练的参数,是通过字典的方式进行保存torch.save(v.
2021-11-23 21:55:10
469
原创 pytorch学习笔记-----现有模型的使用和修改
注意事项:1.很多现有的,比较好的网络模性都在torchvision.models模块下下面观看完整代码import torchvisionfrom torch import nn#现有模型的使用和修改vgg16_flase = torchvision.models.vgg16(pretrained=False)#pretrained=false仅仅就是将网络模型在这里进行替换,参数都是随机初始化的#vgg16_true = torchvision.models.vgg1..
2021-11-23 21:46:01
453
原创 pytorch学习笔记------------优化器
注意事项:1.优化器参数的设置real_optim = torch.optim.SGD(nn_seq_1.parameters(),lr=0.01)#params=nn_seq_1.model是不正确的2.;利用损失反向传播,更新参数real_loss = loss(output,targets)#这是损失值,在损失图像上就是一个点,所以需要求这一点的梯度(这个可以对很多参数求梯度) real_optim.zero_grad()#将网络模型中待优化的参数梯度全部变化0,.
2021-11-23 21:34:07
1069
原创 pytorch学习笔记-激活函数层
注意事项:激活函数也是来自nn模块下import torchvisionfrom tensorboardX import SummaryWriterfrom torch import nnfrom torch.nn import ReLUfrom torch.utils.data import DataLoaderfrom torchvision import transforms# input = torch.tensor([[1,-0.5],# .
2021-11-23 14:31:56
1168
原创 pytorch学习笔记—损失函数
注意事项:1.CrossEntropyLoss()是来自nn模块下,和卷积,池化,全连接层一样loss = nn.CrossEntropyLoss()2.损失函数的input:是由特定要求的,第一个是batch,第二个是类别个数。不符合要求要进行reshapex = torch.tensor([0.1,0.2,0.3])print(x.shape)targets = torch.tensor([1])print(targets.shape)input = torch.resha.
2021-11-19 11:30:01
1187
原创 pytorch学习笔记——Sequential的使用和Flatten和flatten的区别
注意事项:1.Sequential可以简化编程,不需要一个卷积层或者一个池化层就创建一个对象。在forward里面也不需要一个一个对象进行调用。class nn_seq(nn.Module): def __init__(self) -> None: super().__init__() self.model = Sequential(#使用sequential的好处不需要将方法一个一个拿出来 nn.Conv2d(3,32,5,.
2021-11-19 11:00:57
2949
原创 pytorch 学习笔记------线性层
注意事项:1.Linear是来自nn模块下的from torch.nn import Linear2.flatten是来自torch模块下的和nn是平级的from torch import nn, flatten3.展平操作仅仅是把一张图片进行展平,而是把一个batch里面的所有图片都进行展平,然后再连接在一起 imgs,targets = data print(imgs.shape) imgs = flatten(imgs)#展平处理,包括把bat.
2021-11-19 09:55:25
1139
原创 pytorch学习笔记—池化层
import torchvisionfrom tensorboardX import SummaryWriterfrom torch import nnfrom torch.utils.data import DataLoaderfrom torchvision import transformsimport torchtest_set = torchvision.datasets.CIFAR10("./datasets2",train=False,transform=transforms..
2021-11-17 10:31:43
157
原创 pytorch 学习笔记—卷积层
首先是需要定义一个神经网络,实现nn.Module的init和forward方法class nn_conv2d_zj(nn.Module):#定义一个神经网络 def __init__(self) -> None:#定义初始化方法 super().__init__() self.conv1 = nn.Conv2d(in_channels=3,out_channels=6,kernel_size=3,stride=1) def forwar.
2021-11-17 10:16:53
562
原创 pytorch学习笔记----transforms 的使用
transforms的作用:可以使用的这个模块对图像进行一些预处理操作。1.导入工具模块from torchvision import transforms #使用transform 对图像进行变化2.transfrom中ToTensor()的使用:这个模块的主要作用主要就是将 PIL或者numpy.ndarry的图像类型转变成tensor的类型格式transform_totensor = transforms.ToTensor()#用tensor_tans接收ToTen...
2021-11-14 21:24:42
2028
原创 python删除空标注文件及其对应的图片
看代码段1import os#python当中一个常用的系统的库image_dir = "data/images"#图片的路径。label_dir = "data/labels"#标注信息的路径labelnames = os.listdir(label_dir)#创建一个列表用于接受标注路径上的标注文件的名字,并且以列表形式进行呈现for labelname in labelnames:#在标注文件的列表上进行遍历 label = os.path.join(label_di.
2021-11-11 14:40:38
1905
1
原创 pytorch课程-Dataset类实战
from torch.utils. data import Dataset#这个抽象类主要是提供一种方式去获取数据及其labelfrom PIL import Image#使用这个类来读取图片import os# python 当中的一个常用的一个系统的库class MyData(Dataset):#继承抽象类 def __init__(self ,root_dir,label_dir):#一般来说是为了整个class提供一个全局变量 self.r...
2021-11-11 08:59:11
383
原创 tensorboard的一个报错问题
from torch.utils.tensorboard import SummaryWriter#这个类是可以向文件夹log_dir文件夹写入事件,然后事件文件可以被tensorboard进行解析writer = SummaryWriter()#创建实例,并且进行初始化,所以以后就是将事件写入了logs文件夹下了for i in range(100): writer.add_scalar("y=x",i,i)writer.close()看看下面的完美解决from t...
2021-11-10 20:00:44
359
原创 下载代码文件里面的包使用的绝对路径方法从而进行批次下载
例如要下载下面的包pip install -r C:\Users\123\Desktop\yolov5-master\requirements.txt通过以上的方法就可以批次的进行下载
2021-04-20 20:49:55
131
原创 查看自己笔记本的算力和查找适合安装的cuda版本
1.查看本机独立显卡的型号在搜索中输入计算机管理,查看自己的独立显卡型号2.确认开启独立显卡桌面右键nvidia版本控制3.查找计算机的显卡算力和cuda版本支持查看计算机的显卡算力:https://developer.nvidia.com/cuda-gpus查看cuda版本支持:https://en.wikipedia.org/wiki/CUDA4.参考博客:https://blog.csdn.net/weixin_40106401/article.
2021-04-18 14:35:00
3577
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅