【代码实践】DeepBDC for few-shot learning代码运行

news2025/7/19 21:01:51

DeepBDC是Jiangtao Xie等人在CVPR2022上提出的few-shot classification方法,论文全名为“Joint Distribution Matters: Deep Brownian Distance Covariance for Few-Shot Classification”。本文旨在记录在Window系统下运行该官方代码(https://github.com/Fei-Long121/DeepBDC)的过程,中间会遇到一些问题,供大家参考。

环境安装

在anaconda中新建虚拟环境(python=3.8)

conda create -n fsl python=3.8 
conda activate fsl
conda install m2-base  # 安装bash, 后续需要运行sh文件

可以根据提示,安装一些需要的包

conda install pytorch==1.8.0 torchvision==0.9.0 cudatoolkit=10.2 -c pytorch
pip install numpy
pip install scikit-learn
pip install pillow

代码运行

在官网上下载好cub数据集,并运行write_CUB_filelist.py重新生成json文件。然后参考官方说明,按照以下的步骤:

  1. cd scripts/cub/run_meta_deepbdc
  2. modify the dataset path in run_pretrain.sh, run_metatrain.sh and run_test.sh
  3. bash run.sh
    或者也可以依次运行这几个sh文件。

遇到的问题

问题1: Invalid \escape: line 1 column 4570

使用cub/write_CUB_filelist.py重新生成json文件后,运行代码会遇到下面的问题:
在这里插入图片描述
需要注意的是,window下生成路径时跟Linux下生成的路径是不同的,window使用os模块获取路径时,文件路径之间默认为“\”,但写入json时会变成“\”,从而造成json解析的问题。

此时,需要将write_CUB_filelist.py中的某行代码修改一下,将“\”替换成 “\”。

classfile_list_all.append( [ join(folder_path, cf).replace("\\", "/") for cf in listdir(folder_path) if (isfile(join(folder_path,cf)) and cf[0] != '.')])

问题2: EOFError: Ran out of input

在这里插入图片描述
对于window系统,需要将dataset中num_workers设置为0.

问题3: RuntimeError: “nll_loss_forward_reduce_cuda_kernel_2d_index” not implemented for ‘Float’

在这里插入图片描述
运行meta_train遇到上面这个问题,调整了下scores和y_query的数据类型后还是报类似的问题。问了ChatGPT,它推测是pytorch版本的问题,于是换了一个低版本的pytorch。

问题4: AssertionError: Torch not compiled with CUDA enabled

在这里插入图片描述
在更换pytorch遇到这个问题,主要原因是当前的pytorch版本不支持本地的CUDA。需要注意的时,当前torch1.13已经不支持cuda10.2了,从下面的链接可以查看对应的版本torch, torchvision和cuda的版本:https://pytorch.org/get-started/previous-versions/

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

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

相关文章

Linux学习第二十四节-Podman容器

一、容器的概念 容器是由一个或多个与系统其余部分隔离的进程组成的集合。我们可以理解为“集装箱”。 集装箱是打包和装运货物的标准方式。它作为一个箱子进行标记、装载、卸载,以及从一个 位置运输到另一个位置。该容器的内容与其他容器的内容隔离&#xff0c…

传统企业数字化转型真的有必要吗?应该如何做转型?

随着数字经济的快速发展,各行各业数字化转型成为必然。从最初的信息化建设,到数字企业、数字政府建设,再到如今的数字经济建设,传统企业在数字化转型中的作用越来越大。与此同时,数字化转型对传统企业提出了更高的要求…

【Java开发面试】AHXX面试总结

1. java中常用的集合有哪些 java中常用的集合类有List,Set,Map,其中List和Set继承了Collection。 List的实现类有:ArrayList,LinkedList,Vector,Stack Set的实现类有:TreeSet,HashSet Map的实现类有&#…

MySQL运维篇之读写分离

04、读写分离 4.1、介绍 读写分离,简单地说是把对数据库的读和写操作分开,以对应不同的数据库服务器。主数据库提供写操作,从数据库提供读操作,这样能有效地减轻单台数据库的压力。 通过Mycat即可轻易实现上述功能,…

02_Linux终端操作,shell命令,软件安装,文件系统结构,磁盘管理

目录 终端操作 常用Shell命令 Ubuntu软件安装方法 Ubuntu文件系统结构 绝对路径和相对路径 Ubuntn下磁盘管理 终端操作 打开终端快捷键Ctrlaltt 或鼠标右键 常用Shell命令 1.目录信息查看命令ls ls -a 显示目录所有文件及文件夹,包括隐藏文件,比如以.开头的 ls -l…

Synopsys Sentaurus TCAD系列教程之--Sprocess(SmallMOS_2D3D) 解析

SmallMOS_2D3D解析 #header## STI depth set sti_depth 0.15 ## Half STI width set sti_width sti_width ## Half gate length set gate_len <lg/2> ## SD length (from center) set sd_len [expr $gate_len0.05]#endheader## X lines line x location 0.0 spacing 0.…

OSI ARP TCP-IP HDCP

OSI七层参考模型分层名称基本功能应用层用户与网络、应用程序与网络的接口&#xff0c;直接向用户提供服务表示层处理用户信息的表示问题&#xff0c;如编码、数据格式转换和加密解密会话层组织和协调两个会话进程之间的通信传输层应用进程之间的连接&#xff0c;提供端到端的服…

Coremail邮件系统全新上线存档邮箱功能

邮箱积累邮件太多&#xff0c;搜索起来又慢又麻烦&#xff01; 我的重要邮件忘记下载丢失了&#xff01;14天自动删除太难了&#xff01; 有没有可能重要邮件自动存档&#xff0c;解救一下“遗忘星”人&#xff1f; 在我们日常工作中&#xff0c;邮件是最经常使用的办公工具之一…

Spark/Hive

Spark/HiveHive 原理Spark with HiveSparkSession Hive Metastorespark-sql CLI Hive MetastoreBeeline Spark Thrift ServerHive on SparkHive 擅长元数据管理Spark 擅长高效的分布式计算 Spark Hive 集成 : Hive on Spark : Hive 用 Spark 作为底层的计算引擎时Spark w…

【BOOST C++】组件编程(1)--动态链接库

一、说明 所谓组件工程&#xff0c;是指将某些功能函数&#xff08;类&#xff09;做成动态链接库的部分&#xff0c;在运行时调入。在调用功能类时&#xff0c;会调入、释放过程。因此&#xff0c;这里首先知道如何用动态链接库调入功能&#xff0c;然后知道如何才是组件。两个…

数字帆船VR虚拟体验教学有什么特色?

数字帆船VR虚拟体验教学是由广州华锐互动开发的一种应用VR虚拟现实技术的教学模式&#xff0c;通过VR技术&#xff0c;学生可以在虚拟的环境中模拟数字帆船的各个方面&#xff0c;包括横风航行、迎风航行、顺风航行等&#xff0c;在沉浸式的场景中获得更加真实的体验&#xff0…

ASEMI高压MOS管10N60参数,10N60特征,10N60大小

编辑-Z ASEMI高压MOS管10N60参数&#xff1a; 型号&#xff1a;10N60 漏极-源极电压&#xff08;VDS&#xff09;&#xff1a;600V 栅源电压&#xff08;VGS&#xff09;&#xff1a;30V 漏极电流&#xff08;ID&#xff09;&#xff1a;10A 功耗&#xff08;PD&#xff…

【Azure 架构师学习笔记】-Azure Storage Account(2)- Queue Storage

本文属于【Azure 架构师学习笔记】系列。 本文属于【Azure Storage Account】系列。 接上文 【Azure 架构师学习笔记】-Azure Storage Account&#xff08;1&#xff09;-类型简介 前言 Azure Storage Queues 是一个专门用来处理基于云环境队列的Azure 服务。每个队列都维护着…

【(1+1+2+1+2+3+到1+2+3+到+n)】2023-3-5

缘由https://ask.csdn.net/questions/7895988鉴于初学知识储备不足认识模糊&#xff0c;这篇文章就从最基础的C知识入手&#xff0c;用详细资料来描述这个程序关联的知识&#xff0c;由于本程序使用一行语句完成运算&#xff0c;因此&#xff0c;将按运算符&#xff08;自左向右…

每天学一点之网络编程

网络编程 一、软件结构 C/S结构 &#xff1a;全称为Client/Server结构&#xff0c;是指客户端和服务器结构。常见程序有&#xff31;&#xff31;、迅雷&#xff0c;百度网盘。 B/S结构 &#xff1a;全称为Browser/Server结构&#xff0c;是指浏览器和服务器结构。常见浏览器…

go语言踩坑大全

文章目录1.左大括号 { 不能单独放一行2.未使用的变量3.未使用的 import4.简短声明的变量只能在函数内部使用5.使用简短声明来重复声明变量6.不能使用简短声明来设置字段的值7.覆盖了变量差错8.显式类型的变量无法使用 nil 来初始化9.直接使用值为 nil 的 slice、map10.map 容量…

CFS三层靶机安装与配置

CFS三层靶机安装与配置 环境下载 百度网盘 提取码&#xff1a;Chen 环境安装 下载完成后&#xff0c;有三个文件夹&#xff0c;每个文件夹对应一个靶机 进入三个文件夹&#xff0c;双击打开后缀为.ovf的文件&#xff0c;按提示安装虚拟机 环境配置 网段划分 target1&#…

LCMXO3L-1300E-5MG121C/LCMXO3L-1300E-5MG121I【FPGA】LCMXO3L-1300E-5MG256I嵌入式器件

LCMXO3L-1300E-5MG121C/LCMXO3L-1300E-5MG121I【FPGA】LCMXO3L-1300E-5MG256I嵌入式器件【说明】MachXO3设备系列是一个超低密度系列&#xff0c;支持最先进的可编程桥接和IO扩展。它具有突破性的IO密度和最低的每IO成本。设备IO功能集成了对最新行业标准IO的支持。MachXO3L/LF…

工作订单生命流程

1. Field Service 中最重要的流程是工作订单流程&#xff0c;以下是工作订单流程中重要的节点&#xff0c;如图1-1 图1-1 2. 图1-2 说明了构成工作订单流程的实体、属性和关系&#xff0c;本篇文章将重点围绕此图做示例介绍 图1-2 3. 工作订单流转流程如图1-3所示 图1-3 图1…

RLOAM/RO-LOAM

LOAM框架 LOAM框架包含三个步骤&#xff1a; Scan registration&#xff1a;从原始激光扫描点数据中提取点特征。点特征是角点或者面点。 odometry estimation&#xff1a;在特征提取之后&#xff0c;特征点传递到里程计模块&#xff0c;通过特征匹配和优化步骤计算相对坐标变…