原型网络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_setdef 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])	#listsample['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.hqwc.cn/news/191288.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

任你五花八门预训练方法,我自监督学习依然能打!

长时间没看论文,外面已经发展成这样了? 以下都是新paper,挑了几个感兴趣的,一起粗略看看吧~ Battle of the Backbones: A Large-Scale Comparison of Pretrained Models across Computer Vision Tasks GitHub | https://github.…

【APUE】补充 — 基于管道的线程池

目录 一、引言 二、代码实现 三、思考 一、引言 在线程章节的 3.2 部分,我们曾经提到过线程池的实现 在当时的代码中,我们仅仅用的一个 int 类型的变量来表示这个“池”,用来存放任务 显然这个池太小了,如果下游线程很多&am…

肖sir__linux讲解vim命令(3.1)

vim 命令 一、 vi/vim 编辑器共分为三种模式: 格式 :vim 文件名 命令模式(Command mode),“ESC”或ctrlc键 输入模式(Insert mode) 底线命令模式(Last line mode) …

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

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

十个一手app拉新地推拉新推广接单平台,放单/接任务渠道

做过地推拉新的朋友一定都非常清楚,app拉新推广一手接单平台,和非一手接任务平台之间的收益差,可以用天壤之别来形容。那么一手app拉新渠道应该怎么找?下面这十个常见的地推拉新app接单平台,一定要收藏。 1. 聚量推客…

Gem5模拟器学习之旅

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

一文带你了解QT Model/View框架的设计思想和实现机制

目录 1、QT Model/View框架简介 1.1、QT Model/View是什么? 1.2、QT Model/View框架核心思想 1.3、Model/View框架工作机制 1.4、Model/View框架的类 2、Model 2.1模型简介 2.2、模型索引 2.3、数据角色 2.4、QStringListModel 2.5、QFileSystemModel 2…

Nginx反向代理和负载均衡

1.反向代理 反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一…

IPv4数据报格式

IPv4是IP协议的第四个版本(版本1-3和版本5都未曾使用过)IP地址不能反映任何有关主机位置的地理信息以前还有个逆地址解析协议RAPR(Reverse APR),它的作用是使只知道自己MAC地址的主机能通过RAPR找到其IP地址,而现在的DHCP(Dynamic Host Configuration Pr…

Linux网络——HTTP

一.应用层 我们程序员写的一个个解决我们实际问题, 满足我们日常需求的网络程序, 都是在应用层. 我们上一次写的网络版本计算器就是一个应用层的网络程序。 我们约定了数据的读取,一端发送时构造的数据, 在另一端能够正确的进行解析, 就是ok的. 这种约定, 就是应…

macbook ntfs能读不能复制 c盘ntfs拒绝访问怎么解决

如果你是一位Mac用户,你可能会遇到这样的问题:你的Mac能够读取NTFS格式的移动硬盘或U盘,但是不能往里面复制或者修改文件。或者,你的Windows电脑出现了C盘NTFS拒绝访问的错误,导致你无法正常使用系统。这些问题都是由于…

vue使用navigator.mediaDevices.getUserMedia调用相机功能

目录 前言: API: API简单示例: 拍照功能 实现效果: 前言: 本文将介绍Vue中如何使用navigator.mediaDevices.getUserMedia调用相机功能,实现拍照使用实例,需要的朋友可以参考一下。 注意…