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

在这里插入图片描述

文章目录

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


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

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:返回包含中心点和查询集的字典。


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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

复旦大学EMBA深度链接深圳科创产业:聚焦智联,产融未来

作为科创成就的经济大区,深圳南山区通过跨界创新研发生态链条,领跑科创产业创新,以187.5平方公里的面积,雄踞着204家上市公司,地均生产总值产出达到了40.7亿元,相当于每平方公里出产超过1家上市公司&#x…

Java项目实战《苍穹外卖》 二、项目搭建

当我痛苦地站在你的面前 你不能说我一无所有 你不能说我两手空空 系列文章目录 苍穹外卖是黑马程序员2023年的Java实战项目,作为业余练手用,需要源码或者课程的可以找我,无偿分享 Java项目实战《苍穹外卖》 一、项目概述Java项目实战《苍穹外…

B-2:Linux系统渗透提权

B-2:Linux系统渗透提权 服务器场景:Server2204(关闭链接) 用户名:hacker 密码:123456 1.使用渗透机对服务器信息收集,并将服务器中SSH服务端口号作为flag提交; 使用nmap扫描,发现ssh服务端口为2283 Flag:2283 2.使用渗透机对服务器信息收集,并将服务器中…

复合、委托、继承

1. 单例模式 静态实例对象在getInstance函数中定义,这样只有在调用函数时才会生成对象 2. 复合 1. 类中封装另一个类某些功能; 2. 构造、析构的调用过程 指明了复合中如何调用被包含类的构造函数,可以直接写在初始化列表位置; 3.…

剑指JUC原理-19.线程安全集合

👏作者简介:大家好,我是爱吃芝士的土豆倪,24届校招生Java选手,很高兴认识大家📕系列专栏:Spring源码、JUC源码🔥如果感觉博主的文章还不错的话,请👍三连支持&…

Spring Cloud -熔断器Hystrix

为什么需要服务降级或熔断 微服务架构与传统架构的一个显著区别就是服务变多了,任何一个服务调用失败、或者服务不可用,都会对整个应用造成影响。比如前段时间阿里云整体业务不可用,有多方猜测就是阿里云的某一个关键服务不可用导致的。 服…

火星探测器背后的人工智能:从原理到实战的强化学习

目录 一、引言二、强化学习基础强化学习的基本概念主要算法概述Q-Learning 示例代码 环境建模与奖励设计 三、火星探测器任务分析任务需求与挑战探测器环境建模目标设定与奖励机制层层递进的关系 四、强化学习模型设计模型架构概述DQN架构核心组件: 状态、动作与奖励…

RT-Thread基于STM32H743的网络通信调试

使用STM32H743开发网络通信,本以为会很简单,实际却遇到好多问题,记录一下,以备后续查看。 1.新建工程,系统版本选择的是4.1.1,芯片型号是STM32H743IIK6. 2.修改系统时钟,使用外部25MHz晶振&…

C++类与对象(1)—初步认识

目录 一、面向过程和面向对象 二、类 1、定义 2、类的两种定义方式 3、访问限定符 4、命名规范化 5、类的实例化 6、计算类对象的大小 7、存储方式 三、this指针 1、定义 2、存储位置 3、辨析 四、封装好处 一、面向过程和面向对象 C语言是面向过程的&#xf…

记录联系ThinkPad T490扬声器无声音但插耳机有声音的解决办法

型号:联想ThinkPad T490,系统Win10 64位。 现象:扬声器无声音,插耳机有声音。且右下角小喇叭正常,设备管理器中驱动显示一切也都正常(无黄色小叹号)。 解决办法: 尝试了各种方法&a…

基础课7——数据预处理

在智能客服系统中,数据预处理是进行自然语言处理(NLP)的关键步骤之一。它是对用户输入的文本数据进行分析、处理和转换的过程,目的是将原始文本数据转化为计算机可理解的语言,为后续的智能回答提供支持。 1.什么是数据…

数据结构-插入排序+希尔排序+选择排序

目录 1.插入排序 插入排序的时间复杂度: 2.希尔排序 希尔排序的时间复杂度: 3.选择排序 选择排序的时间复杂度: 所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的…

基于SpringBoot+MyBatis-Plus的教务管理系统

基于SpringBootMyBatis-Plus的教务管理系统 教务管理系统开发技术功能模块代码结构数据库设计运行截图源码获取 教务管理系统 欢迎访问此博客,是否为自己的毕业设计而担忧呢?是否感觉自己的时间不够做毕业设计呢?那你不妨看一下下面的文章&a…

CUDA编程一、基本概念和cuda向量加法

目录 一、cuda编程的基本概念入门 1、GPU架构和存储结构 2、cuda编程模型 3、cuda编程流程 二、cuda向量加法实践 1、代码实现 2、代码运行和结果 有一段时间对模型加速比较感兴趣,其中的一块儿内容就是使用C和cuda算子优化之类一起给模型推理提速。之前一直…

2023年最新软件安装管家目录

最新软件安装管家目录 软件目录 ①【电脑办公】电脑系统(直接安装)Win7Win8Win10OfficeOffice激活office2003office2007office2010office2013office2016office2019office365office2021wps2021Projectproject2007project2010project2016project2019projec…

python基础练习题库实验3

题目1 编写一个程序,根据以下定价计算成本。 Number of itemsCost1-50每件3美元 邮费: 10美元超过50每件2美元 邮寄:免费 举个例子: 代码 items_num input("Enter the number of items: ") items_num_i int(items_num) ite…

JVM虚拟机:通过日志学习PS+PO垃圾回收器

我们刚才设置参数的时候看到了-XXPrintGCDetails表示输出详细的GC处理日志,那么我们如何理解这个日志呢?日志是有规则的,我们需要按照这个规则来理解日志中的内容,它有两个格式,一个格式是GC的格式(新生代&…

Leetcode—206.反转链表【简单】

2023每日刷题(三十三) Leetcode—206.反转链表 头插法实现代码 /*** Definition for singly-linked list.* struct ListNode {* int val;* struct ListNode *next;* };*/ struct ListNode* reverseList(struct ListNode* head) {if(head NULL…

PaddlePaddle:开源深度学习平台

深度学习作为人工智能领域的重要分支,正在全球范围内得到广泛应用。而在构建和训练深度学习模型时,选择一个高效、易用且功能强大的开源平台是至关重要的。PaddlePaddle(即飞桨)作为国内领先的深度学习平台,一直以来都…

13.真刀实枪做项目---博客系统(页面设计)

文章目录 1.预期效果1.1博客列表页效果1.2博客详情页效果1.3博客登陆页效果1.4博客编辑页效果 2.实现博客列表页2.1实现导航栏2.2实现版心2.3实现个人信息2.4实现博客列表2.5博客列表页完整代码 3.实现博客正文页3.1引入导航栏3.2引入版心3.3引入个人信息3.4实现博客正文3.5博客…