原型网络Prototypical Network的python代码逐行解释,新手小白也可学会!!-----系列6 (承接系列5)

news2024/12/22 18:04:42

在这里插入图片描述

文章目录

  • 一、原始代码---随机采样和评估模型
  • 二、详细解释分析每一行代码


一、原始代码—随机采样和评估模型

def randomSample(self,D_set): #从D_set随机取支持集和查询集(20个类中的其中一个类,shape为[20,105,105])
		index_list = list(range(D_set.shape[0]))#20个图片中选5个
		random.shuffle(index_list)
		support_data_index = index_list[:self.Ns]
		query_data_index = index_list[self.Ns:self.Ns + self.Nq]
		support_set = []
		query_set = []
		for i in support_data_index:
			support_set.append(D_set[i])
		for i in query_data_index:
			query_set.append(D_set[i])
		return support_set,query_set
	
	def evaluation_model(self,labels_data,class_number):
		test_accury = []
		center_for_test={}
		class_index = list(range(class_number))#600多类
		random.shuffle(class_index)
		choss_class_index = class_index[:self.Nc]#选20个类
		sample = {'xc':[],'xq':[]}
		for label in choss_class_index:
			D_set = labels_data[label]
			#从D_set随机取支持集和查询集
			support_set,query_set = self.randomSample(D_set)
			#计算中心点
			center_for_test[label] = self.compute_center(support_set)
			#将中心和查询集存储在list中
			sample['xc'].append(center_for_test[label])	#list
			sample['xq'].append(query_set)

二、详细解释分析每一行代码

def randomSample(self,D_set)::定义一个名为randomSample的方法,该方法属于某个类的实例方法。它接受一个名为D_set的参数,这个参数应该是一个三维数组(20个类别,每个类别有105*105个数据)。

index_list = list(range(D_set.shape[0])):生成一个包含所有索引的列表。这里使用range(D_set.shape[0])来生成从0到D_set长度(即类别数)的整数序列。

random.shuffle(index_list):使用random.shuffle函数将index_list中的元素随机打乱顺序,以便在下面的代码中选择随机的索引。

support_data_index = index_list[:self.Ns]:选取前self.Ns个索引作为支持集的索引。

query_data_index = index_list[self.Ns:self.Ns + self.Nq]:选取从第self.Ns个索引到第self.Ns + self.Nq个索引作为查询集的索引。

support_set = [] 和 query_set = []:初始化两个空列表,用于存储从D_set中提取的支持集和查询集。

在接下来的两个循环中,对每个支持集索引和查询集索引,从D_set中提取对应的样本并添加到对应的集合中。

return support_set,query_set:返回支持集和查询集。

def evaluation_model(self,labels_data,class_number)::定义一个名为evaluation_model的方法,该方法属于某个类的实例方法。它接受两个参数:labels_data(包含所有类别数据的数组)和class_number(类别数)。

test_accury = []:初始化一个空列表,用于存储模型的测试准确度。

class_index = list(range(class_number)):生成一个包含所有类别索引的列表。

random.shuffle(class_index):使用random.shuffle函数将class_index中的元素随机打乱顺序,以便在下面的代码中选择随机的类别。

choss_class_index = class_index[:self.Nc]:选取前self.Nc个类别作为选择的类别。

初始化一个字典sample,包含两个键值对:'xc’对应一个空列表,'xq’对应一个空列表。

在接下来的循环中,对于选择的每个类别,执行以下操作:

a. 从该类别的数据中随机选择支持集和查询集(使用之前定义的randomSample方法)。

b. 计算支持集的中心点(使用之前定义的compute_center方法)。

c. 将中心点和查询集的元素添加到字典的对应列表中。

return sample:返回包含中心点和查询集的字典。


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1224063.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

算法设计与分析 | 分治棋盘

题目 在一个2^k * 2^k个方格组成的棋盘中,恰有一个方格与其他方格不同,称该方格为一特殊方格,且称该棋盘为一特殊棋盘。在棋盘覆盖问题中,要用图示的4种不同形态的L型骨牌覆盖给定的特殊棋盘上除特殊方格以外的所有方格&#xff0…

2023亚太杯数学建模思路 - 案例:异常检测

文章目录 赛题思路一、简介 -- 关于异常检测异常检测监督学习 二、异常检测算法2. 箱线图分析3. 基于距离/密度4. 基于划分思想 建模资料 赛题思路 (赛题出来以后第一时间在CSDN分享) https://blog.csdn.net/dc_sinor?typeblog 一、简介 – 关于异常…

【Linux】进程间通信 -- 管道

对于进程间通信的理解 首先,进程间通信的本质是,让不同的进程看到同一份资源(这份资源不能隶属于任何一个进程,即应该是共享的)。而进程间通信的目的是为了实现多进程之间的协同。 但由于进程运行具有独立性&#xff…

stable diffusion十七种controlnet详细使用方法总结

个人网站:https://tianfeng.space 前言 最近不知道发点什么,做个controlnet 使用方法总结好了,如果你们对所有controlnet用法,可能了解但是有点模糊,希望能对你们有用。 一、SD controlnet 我统一下其他参数&#…

python 对图像进行聚类分析

import cv2 import numpy as np from sklearn.cluster import KMeans import time# 中文路径读取 def cv_imread(filePath, cv2_falgcv2.COLOR_BGR2RGB): cv_img cv2.imdecode(np.fromfile(filePath, dtypenp.uint8), cv2_falg) return cv_img# 自定义装饰器计算时间 def…

解决:虚拟机远程连接失败

问题 使用FinalShell远程连接虚拟机的时候连接不上 发现 虚拟机用的VMware,Linux发行版是CentOs 7,发现在虚拟机中使用ping www.baidu.com是成功的,但是使用FinalShell远程连接不上虚拟机,本地网络也ping不通虚拟机&#xff0c…

10-19 HttpServletResponse

相应的对象 web开发模型:基于请求与相应的模型 一问一答的模型 Response对象:响应对象,封装服务器给客户端的相关的信息 顶级接口: ServletResponse 父接口:HttpServletResponse response对象的功能分为以下四种:(都是服务器干的事注意) 设置响应头信息; 发送状态码…

2023年【四川省安全员A证】考试资料及四川省安全员A证考试试卷

题库来源:安全生产模拟考试一点通公众号小程序 2023年四川省安全员A证考试资料为正在备考四川省安全员A证操作证的学员准备的理论考试专题,每个月更新的四川省安全员A证考试试卷祝您顺利通过四川省安全员A证考试。 1、【多选题】《建设工程安全生产管理…

竞赛选题 疲劳驾驶检测系统 python

文章目录 0 前言1 课题背景2 Dlib人脸识别2.1 简介2.2 Dlib优点2.3 相关代码2.4 人脸数据库2.5 人脸录入加识别效果 3 疲劳检测算法3.1 眼睛检测算法3.2 打哈欠检测算法3.3 点头检测算法 4 PyQt54.1 简介4.2相关界面代码 5 最后 0 前言 🔥 优质竞赛项目系列&#x…

GamingTcUI.dll丢失修复,最全面的GamingTcUI.dll修复指南

热衷于电脑游戏的用户可能会在启动游戏时遇到这样的错误信息:"无法启动应用,因为找不到GamingTcUI.dll"。那么这个GamingTcUI.dll文件是什么?如何解决这个问题呢?我们将在本文中进行详细讲解。 一.GamingTcUI.dll是什么…

kibana8.10.4简单使用

1.创建discovery里的日志项目 点击stack management 选择kibana里的数据视图,右上角创建数据视图,输入名称。索引范围。例子 example-* ,匹配以example-开头的所有index。 然后点击 保存数据视图到kibana, 2.Kibana多用户创建及角色权限控…

向pycdc项目提的一个pr

向pycdc项目提的一个pr 前言 pycdc这个项目,我之前一直有在关注,之前使用他反编译python3.10项目,之前使用的 uncompyle6无法反编译pyhton3.10生成的pyc文件,但是pycdc可以,但是反编译效果感觉不如uncompyle6。但是版…

Gem5模拟器学习之旅

安装gem5 模拟器 翻译自官网(https://www.gem5.org/documentation/learning_gem5/part1/building/) 支持的操作系统和环境 gem5的设计考虑到了Linux环境。我们定期在 Ubuntu 18.04、Ubuntu 20.04 和 Ubuntu 22.04 上进行测试,以确保 gem5 在…

WeTab--颜值与实力并存的浏览器插件

一.前言 现在的浏览器花花绿绿,有大量的广告与信息,令人目不暇接。有没有一款好用的浏览器插件可以解决这个问题呢?我愿称WeTab为版本答案。 WeTab的界面: 干净又整洁。最最关键的是还有智能AI供你服务。 这个WeTabAI就像chatgp…

如何去掉照片中多余路人?一分钟帮你搞定

在外出拍照时,可能会遇到一些不希望出现在照片中的路人,比如在旅游景点、公共场所或者街头拍摄时突然闯入镜头的人。这些路人的出现可能会破坏照片的整体氛围,影响照片的美观度。因此,需要使用一些方法去掉这些多余的路人&#xf…

Python编程技巧 – 对象和类

Python编程技巧 – 对象和类 Python Programming Skills – Object and Class Python是一种面向对象的高级程序语言。 本文简要介绍用Python如何实现面向对象,对象和类的声明及使用,以及面向对象的特征,及其如何使用属性和方法的介绍&#x…

[深度学习]卷积神经网络的概念,入门构建(代码实例)

# 不再任何人,任何组织的身上倾注任何的感情,或许这就是能活得更开心的办法 0.写在前面: 卷积神经网络的部分在之前就已经有所接触,这里重新更全面地总结一下关于深度学习中卷积神经网络的部分.并且在这里对如何构建代码,一些新的思想和网络做出一点点补充,同时会持续更新一些…

深信服AC密码认证(外部认证:LDAP认证)

拓扑图 搭建好自己AD域服务器,我搭建的服务器域名叫做liyanlongyu.com,如何搭建这里我就不做演示了 一.在AC中添加自己AD域服务器 二.添加LDAP认证策略 验证: 未认证发现,无法上网 点击网页,弹出认证页面 认证后&…

HAL库STM32串口开启DMA接收数据

STM32CubeMx的配置 此博客仅仅作为记录,这个像是有bug一样,有时候好使,有时候不好,所以趁现在好使赶紧记录一下,很多地方用到串口接收数据,DMA又是一种非常好的接收方式,可以节约CPU的时间&…

【C语言】深入理解数据表示与存储

文章目录 1.分析上述源程序中的变量在机器内是如何表示的1.1.并给出变量在内存中的存储情况(变量占多少个字节,每个字节的地址和存放的数据是多少)1.2.说明其存放顺序(大端、小端次序?)1.3.对齐方式&#x…