- 博客(58)
- 资源 (1)
- 收藏
- 关注
原创 正确理解协程
当执行这句” await say_after(1, 'hello')” 将会交出程序控制权,等待 say_after(1, 'hello')” 执行完,当然系统也有机会执行其他协程(看系统调度)。
2024-10-08 07:08:20 323
原创 熵与信息量简单理解。
明显,某个随机事件,每个事件发生的平均概率越来越低,熵就越来越大。a要把信息传递给b。例如可以传递 二进制数110中就可以让b了解这件事的信息。1.例如:假定a能看到一个随机试验,就是从0-7中任意选一个数。公式 -log2(P) P是这件事发生的概率。2.假定a能看到一个随机试验,就是从0-4中任意选一个数。第1种情况的熵为 3*1/8+3*1/8+...=3。第2种情况的熵为 2*1/4+2*1/4+...=2。传递的信息就是10,传递的信息长度就是2.上面计算熵,熵是信息的期望。
2024-02-12 13:14:45 573
原创 【四元数简述】
(0+1i+2j+3k)*(w+xi+yj+zk)结果就是旋转后的向量。向量(x,y,z)是旋转轴 a 是任意正数 theta是旋转角度。空间中向量(1,2,3)扩展为(0,1,2,3)变为四元数。计算(0,1,2,3)*(w,x,y,z)类似向量计算。上面就是一个四元数表示旋转。
2023-11-20 08:02:16 420
原创 module ‘cv2‘ has no attribute ‘aruco‘解决
opencv-contrib-python属于加强版,除了主模块,还包含一些增强模块及以下测试的新算法,验证成熟后,再加入主模块。pip install opencv-contrib-python #使用这个可以解决。凡是cv2的找不到基本都是这个问题。
2022-10-14 11:04:33 2016 2
原创 信息量 就是确定某件事发生需要的有效2进制位的多少。
我编码 000,001,010,011,100,101,110,111 (8个)分别表示摸到第一个球m1、摸到第二个m2...我发给你1个bit,1 ,完了,你只能知道{m5,m6,m7,m8}中的一种可能,信息量为1。3)如果我告诉你"摸出了球,可能是1到8”,实际上你没有得有效的信息。我发给你3个bit,010,你得到了确定的信息,信息量最大为3。1)我告诉你"摸出了7号球",实际上我告诉你了最大有效信息。我不发0个bit ,你完全没得到有效信息,信息量为0。...
2022-08-27 09:17:22 621
原创 linux Ubuntu创建软链接,类似win快捷方式,22.04设创建快捷键
最近使用ubuntu 想使用类似快捷方式,研究一下,总结以下一点。
2022-08-26 18:01:37 860
原创 信息量特点:就是排除可能越多,信息量就越大
(近似),越是能预测小概率时间的信息价值越高,信息量就越大。你说明天是晴天,你排除了3种状态【阴、雨、雪】信息量为A。信息量:=ln(1/p) p为该事件发生的概率。例如:明天天气假定是:【晴、阴、雨、雪】4种状态。你说明天是坏天气,你排除了【晴】信息量为B。3.信息量越大,概率越小。1.信息量就是数据的长度。2.信息越多,发生概率越大。1.信息是排除不确定性的,排除可能越多,信息量就越大。2.信息量也可以理解为。
2022-08-24 21:03:23 2146
原创 python import 使用相对目录
总结:import 使用相对目录后,该文件只能作为模块供导入,不能直接执行。import0.py将不能执行,执行就会报错。import0 #这样不会发生错误。可以导入文件 import0。
2022-08-15 08:17:02 337
原创 open cv error,这个错误查了好久,是安装问题
cv2.error: OpenCV(4.5.1) ../modules/highgui/src/window.cpp:651: error: (-2:Unspecified error) The function is not implementedpip install opencv-contrib-python #使用这个可以解决# opencv-contrib-python属于加强版,除了主模块,还包含一些增强模块及以下测试的新算法,验证成熟后,再加入主模块 ...
2022-05-27 12:06:04 632
原创 YOLOX图解收集
yolox特点:1. 无锚框设计2. 双头输出 一个头输出类别,一个头输出位置大小和IOU(概率)所有图片网络收集,有异议会删除
2022-03-18 08:11:24 352
原创 Yolov5-v6.0模型详解
Yolov5-v6.0模型详解# YOLOv5 v6.0 backbonebackbone: # [from, number, module, args] [[-1, 1, Conv, [64[l1], 6[l2], 2[l3], 2[l4]]], # 0-P1/2 [-1, 1, Conv, [128, 3, 2]], # 1-P2/4 [-1, 3[l5], C3, [128]], [-1, 1, Conv, [256, 3, 2]], # 3...
2022-02-01 11:12:16 17414 2
原创 卷积操作Conv2d详细解释以及案例
import torchx = torch.randn(2,1,3,2) (2张图片,通道数1单色,高3,宽2)conv = torch.nn.Conv2d(1,8,(2,3))输入通道数1,和上面x数据保持一致输出的通道 8,也就是核的个数,决定了输出数据的通道数,也可以理解为有8个核处理了图片输出8个矩阵。y=conv(x) #用卷积处理x返回yy的shape为(2,8,?,?) #还是2张,8通道,高,宽下面是源代码可以测试:#2d中...
2022-01-22 10:06:33 5088
原创 DQN Deep Q Network算法 详细图解,留言、收藏、转发足够多,我就发详细注释的案例代码
1、先建立模型Q_eval,随机初始化2、让图像二值化为状态State,作为模型输入,假定模型输出3个Q值(Q就是衡量该行为的价值,Q最大就采用这个行为Act)该图Act=‘下’3、状态State 在Act行为下,产生新状态S_,这时你根据游戏形势给他一个奖励Reward简化为(State,Act,Reward,State_)即(s,a,r,s_)4、保存(s,a,r,s_)1、再建立一个模型target_model,与模型eval一样,这个模型参数更新...
2021-12-11 22:54:07 859 2
原创 torch.load()模型时报错no module named ‘xxxx‘
加载模型中有自定义的层,以及引用模块,这些必须要事先定义。#加载模型应该把原模型的定义以及导入模块准备好举例:#下面绿色的部分是原有模型model-1.pkl定义的类和引用模块。如果要torch.load('model-1.pkl'),下面定义必须要先写好import numpy as npimport torchimport matplotlib.pyplot as pltclass mymodel (torch.nn.Module): def __init__(self,d_..
2021-10-08 07:35:23 1031
原创 2021-10-03 编写模块使用相对路径
编写模块使用相对路径见下图,其中abc.py是我们编写的代码,有下面内容:# 以下为 abc.py内容f = open("con/f1.txt", "w")txt=f.read()print(txt)以后想作为模块引用即: import abc上面语句绿色的目录要修改,为了避免以后麻烦可以改为:import osmypath=os.path.dirname(__file__) #__file__是执行时本文件绝对位置,被当模块导入时也是,f = open(my..
2021-10-03 08:57:38 80
原创 模块的多级导入,或者叫嵌套的处理。如何避免修改模块
模块的多级导入或者嵌套f1.py 就是我们编写模块的环境,有子目录中文件导入也没关系见图 abc 导入了 f1 , f1导入了f2, 运行abc会发生错误无法导入f2。因为abc运行时,模块搜寻从abc当前文件夹root开始,找不到f2程序文件__init__.py 添加以下内容import sysimport ospath=os.path.dirname(__file__) #系统变量__file__会包含本文件的路径sys.path.append...
2021-10-01 09:57:28 155
原创 tKinter一种简单页面切换
from tkinter import *import tkinter as tkclass Frame1(tk.Frame):#不继承也可以 第一个页面 def __init__(self,master): super().__init__(master) self.place(x=100,y=100) label=tk.Label(self,text="fram1") label.pack() pass ...
2021-09-16 20:44:54 2359
原创 python yaml 读写多个列表
#open方法打开直接读出来importyamlimportosimportsysmypath2=sys.path[0]f=open(mypath2+'/1.yaml','r+',encoding='utf-8')list1=[1,2,3,4]list2=[12,3,4,5,6]yaml.dump_all([list1,list2],f)f.close()f=open(mypath2+'/1.yaml','r+',encod...
2021-08-25 08:27:03 1330
原创 Yaml文件的读写简单案例
# 先写importyamlimportsysmypath2=sys.path[0]print("-获取脚本当前文件夹--",mypath2)f=open(mypath2+'/1.yaml','r+',encoding='utf-8')list1=[1,2,3,4]yaml.dump(list1,f) #写列表f.close()#读f=open(mypath2+'/1.yaml','r+',encoding='utf-8')cfg=f....
2021-08-25 08:17:06 123
原创 P R MAP简单理解,yolo中
Precision(精确率、查准率):已识别的分类准确率我的理解:正确分类的个数/所有识别出来的个数Recall (召回率、查全率)我的理解 :已经识别的个数 / 应该识别的个数MAP@.5 (MeanAccuracy)就是把置信度设定在0.5,超过0.5就是我们就认定他是某类物体平均准确率...
2021-08-16 23:21:22 2533
原创 利用for循环删除列表元素方法,使用reversed函数
#使用reversed,让列表倒序,然后遍历,否则删除元素会导致列表下标变化,不能获取所有元素list1=[1,2,3,4,5]list2=[2,3,4,5,6]for l1 in reversed(list1): #使用reversed函数 从后面循环,避免删除元素后列表变化导致某些元素无法遍历。 if l1 in list2: list2.remove(l1) list1.remove(l1) print(list1,list2)...
2021-08-13 12:49:07 432
原创 numpy函数 where使用详解,以及与 argwhere的 区别
import numpy as npn2=np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])pos=np.where(n1>5)#上面这行会得到上面蓝色的数字位置,6,7,8,9 的位置为(1,3),(2,0),(2,1),(2,2)#但是pos内容是([1,2,2,2],[3,0,1,2]) =(第一维度坐标列表,第二维度坐标列表),pos是tuple...
2021-07-12 16:06:57 1225 1
原创 Sigmoid + BCELoss = BCEWithLogitsLoss 注意一个逻辑错误
input1=Sigmoid(input)loss=BCELoss(input1,target)---------------与下面代码同效果----------------BCEWithLogitsLoss(input, target)-------------------------------------------------------使用时由于input的值可能因为有效数字的问题导致input 中可能有0,或者1 ,导致提示无法求导或者其他错误。因此要限制input 不能太大
2021-07-07 11:59:59 586
原创 Giou简洁算法
def Giou(rect_a, rect_b): ax0, ay0, ax1, ay1 = rect_a #a框坐标 bx0, by0, bx1, by1 = rect_b#b框坐标#外框就是包含a与b的最小矩形 outx0 = min(ax0, bx0)#外框x0 outx1 = max(ax1, bx1)#外框x1 outy0 = min(ay0, by0)#外框y0 outy1 = m...
2021-06-28 07:32:43 330
原创 一个简单例子理解BCEWithLogitsLoss的作用
import torchmy_input = torch.FloatTensor([0.2,0.3,0.4])loss_func = torch.nn.BCEWithLogitsLoss()target = torch.FloatTensor([0,0,1])ww=torch.tensor([0.1,0.2,0.3])ww.requires_grad=True #ww允许求梯度for i in range(10): pre=my_input * ww #一个全链接 ...
2021-06-25 20:55:08 1811 1
原创 torch叶子节点才能保存grad,叶子节点如何修改才不变为中间节点,保留grad呢?使用data
#梯度存储在自变量中,grad属性中import torchx = torch.tensor([3.0,5],requires_grad=True)#x设为可以求梯度,由他生成的变量均可求导x1=torch.tensor([3.7,4])#默认不可求梯度y = x ** 2+x1 #x是叶子节点,y是非叶子节点,backward()后y.grad_fn, y.grad不存在z=y[0]+y[1]#判断x,y,z是否是可以求导的print("x1:",x1.requires_gra.
2021-06-18 15:39:46 758
原创 一个简单模型学习了解torch如何训练一个模型,理解如何修改一个模型的权值。
#梯度存储在自变量中,grad属性中import torch#用(1,1)*W =100,学习调整W权值w = torch.tensor([0.1,0.1],requires_grad=True)#这是我们的权值矩阵x=torch.tensor([1.0,1.0]) #输入值y=torch.tensor([100.0]) #目标值for i in range(20): pre=torch.matmul(x,w) # pre=W*X loss.
2021-06-17 16:53:05 443
原创 torch.stack,增加维度,tensor处理
import torcha=torch.tensor([[1,2,3], [4,5,6], [7,8,9]])print(a.shape) # 输出: torch.Size([3, 3])aa=torch.stack((a,a),dim=1) #stack 会在dim插入维度(维度增加),大小为堆的数目print(aa.shape) # 输出: torch.Size([3,2,3])...
2021-06-11 12:11:57 802
原创 2021-06-11 numpy重排,重复,操作,维度不变取,维度变化取
numpy重排,重复,操作import numpy as npb=np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])print(b,"\n")c=b[[0,2,1,1],:] #编号1的行重复2次排到后面print(c,"\n")print(b[:,[0]],"\n") #维度保持不变print(b[:,0]) #维度将会减1...
2021-06-11 10:56:42 595 1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人