- 博客(9)
- 收藏
- 关注
原创 CLIP小样本代码实现复盘
而clip模型的输入要求pil格式,所以如果在getitem中读取图片会报错,因此我选择将图片的地址信息作为数据送入dataloader,之后在送入clip模型。网络部分,由于是使用了clip的编码层和自己创建的映射层,定义了两个model,为了实现冻结clip编码层,在Adam函数中只更新映射层参数。实现了clip编码层冻结。保存实验结果的方法选择了pands创建csv文件,其中往csv写入数据要注意输入应该是[data],需要有一个[],不然所有的数据都会写入第一列。用混淆矩阵展示了实验结果。
2023-11-04 12:20:49
475
原创 绘制混淆矩阵
sns.heatmap()绘制热力图。cmp是颜色,有很多种颜色可以选择。annot=True表示在方框中显示数字,fmt可以设置数字的格式,保留小数点几位。还有ax可以设置文字属性等,这部分可以参考链接2。confusion_matrix()函数计算混淆矩阵,输入分别是真实标签值,预测标签值,labels可以自己设计,也可以默认。最后记得用plt.show()显示。,注意链接第一个例子答案有问题。注意:标签值是一维数组。
2023-11-03 14:58:29
254
原创 list numpy tensor三者互相转换
1.list和numpy转换为tensor都是利用的tensor函数,所以list和numpy要作为输入放在括号里。list转numpy同理。2.tensor转numpy和numpy转list都是用的对应内部函数,所以只需要变量.调用函数即可。tensor转换为list主要是先转换为数组numpy,然后在转换为列表list。3.tensor转numpy要在cpu上转。4.list转tensor默认是float。,如需要其他格式,详见参考链接。
2023-11-03 12:55:54
331
原创 损失函数反向传播时报错
我当时的情况是第一次loss能传播,但第二次会报错,后来发现是自己有一个特征提取的变量(需要反向传播的变量)放在了batch循环外面,所以第一次loss反向传播结束后会修改这个值,导致第二次报错。按照网上的教程,修改inplace=False。并将代码中a+=b等运算换成a=a+b。在此记录一下我的解决方案。所以将这个变量放进循环,第二次循环会重新赋值。首先根据报错的张量大小找到可能出错的网络分支。
2023-11-02 20:55:23
176
原创 pytorch 交叉损失熵函数及CLIP中的对比函数
在深度学习进行分类任务时经常用到交叉损失熵函数:首先定义logic表示余弦相似度,labels表示真实标签。可以直接使用交叉熵损失函数其中logic是一个,N表示有多少个样本(BatchSize),C表示类别总数。例如表示有三个样本,四个类别。而labels是一个,大小为N。表示N个样本所对应的真实类别。如label=[3,0,1],表示一个有三个样本,第一个样本对应的真实标签为3,第二个真实标签为0,第三个真实标签为1.
2023-10-31 11:24:02
3070
1
原创 YOLOV5修改ui文件后,调用结果不变
在按照网上教程使用qt designer修改win.ui文件时发现,无论怎样修改ui文件,主函数调用时界面仍然是未修改的界面,后来经过查询得知,需要先修改apprcc.qrc文件,在qrc文件中添加自己想要加入的照片,注意照片路径和后缀。在修改qrc文件后,修改ui文件则可以成功使用。
2022-09-16 20:05:37
399
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人