【数据分析】之ReGat的VQAFeaturesDataset加载

VQA-CP v2数据集和VQA v2数据集 数据集介绍 阅读详情

1 .VQAFeatureDataset

此类是ReGat项目对torch自带的from torch.utils.data import Dataset的重写,是模型运行的时候训练集和测试集的加载,加载的数据是模型forward函数的参数。如下:
regat.forward():

    def forward(self, v, b, q, implicit_pos_emb, sem_adj_matrix,
                spa_adj_matrix, labels):
        """Forward
        v: [batch, num_objs, obj_dim]
        b: [batch, num_objs, b_dim]
        q: [batch_size, seq_length]
        pos: [batch_size, num_objs, nongt_dim, emb_dim]
        sem_adj_matrix: [batch_size, num_objs, num_objs, num_edge_labels]
        spa_adj_matrix: [batch_size, num_objs, num_objs, num_edge_labels]
        return: logits, not probs
        """
        w_emb = self.w_emb(q) #问题嵌入
        q_emb_seq = self.q_emb.forward_all(w_emb)  # [batch, q_len, q_dim]
        q_emb_self_att = self.q_att(q_emb_seq)  #添加自注意力信息

        # [batch_size, num_rois, out_dim]
        if self.relation_type == "semantic": #如果关系类型是语义
            v_emb = self.v_relation.forward(v, sem_adj_matrix, q_emb_self_att)
        elif self.relation_type == "spatial": #如果关系类型是空间
            v_emb = self.v_relation.forward(v, spa_adj_matrix, q_emb_self_att)
        else:  # implicit #如果是隐式关系
            v_emb = self.v_relation.forward(v, implicit_pos_emb,
                                            q_emb_self_att)

        if self.fusion == "ban": #融合模型1
            joint_emb, att = self.joint_embedding(v_emb, q_emb_seq, b)
        elif self.fusion == "butd": #融合模型2
            q_emb = self.q_emb(w_emb)  # [batch, q_dim]
            joint_emb, att = self.joint_embedding(v_emb, q_emb)
        else:  # mutan融合模型3
            joint_emb, att = self.joint_embedding(v_emb, q_emb_self_att)
        if self.classifier: #分类模型
            logits = self.classifier(joint_emb)
        else: 
            logits = joint_emb
        return logits, att

VQAFeatureDataset

self中的变量

变量名含义来源值
self.ans2label单词-索引表示:字典trainval_ans2label.pkl{‘net’: 0, ‘pitcher’: 1, ‘orange’: 2, ‘yes’: 3, ‘white’: 4,…
self.label2ans索引-单词表示:列表trainval_label2ans.pkl[‘net’, ‘pitcher’, ‘orange’, ‘yes’, ‘white’,.
self.num_ans_candidates答案单词候选数:intlen(self.ans2label)3129
self.img_id2idx图像id-索引表示:字典imgid2idx.pkl{218224: 0, 306670: 1, 208663: 2, 225177: 3, 467257: 4, .
self.features图像特征:Tensorhf.get(‘image_features’)tensor[40504,36,2048]
self.normalized_bb标准化区域边界框空间位置:Tensorhf.get(‘spatial_features’)tensor([40504, 36, 4])
self.bb区域边界框位置:Tensorhf.get(‘image_bb’)tensor[40504,36,4]
self.semantic_adj_matrix语义形容词矩阵如果在hf的键中:hf.get(‘semantic_adj_matrix’) ,不在=None
self.spatial_adj_matrix空间形容词矩阵如果在hf的键中:hf.get(‘image_adj_matrix’) ,不在=None
self.pos_boxesNoneNoneNone
self.entries数据条目,items:list_load_dataset(dataroot, name, self.img_id2idx,self.label2ans)长度214354
self.nongt_dimself.nongt_dim = nongt_dim36
self.emb_dim位置嵌入维度pos_emb_dim64
self.v_dim图像特征嵌入维度self.features.size(1 if self.adaptive else 2)2048
self.s_dim方向维度self.normalized_bb.size(1 if self.adaptive else 2)6
class VQAFeatureDataset(Dataset):
    def __init__(self, name, dictionary, relation_type, dataroot='data',
                 adaptive=False, pos_emb_dim=64, nongt_dim=36):
        super(VQAFeatureDataset, self).__init__()
        assert name in ['train', 'val', 'test-dev2015', 'test2015']
        
		# 加载annotations.json的预处理后的pkl文件
        ans2label_path = os.path.join(dataroot, 'cache', 'trainval_ans2label.pkl')
        label2ans_path = os.path.join(dataroot, 'cache', 'trainval_label2ans.pkl')
        self.ans2label = pickle.load(open(ans2label_path, 'rb')) #形如{'w1':1,'w2':2,...,'w3129':3129}
        self.label2ans = pickle.load(open(label2ans_path, 'rb'))#['w1','w2',...,'w3129']


        self.num_ans_candidates = len(self.ans2label) #候选答案单词数目=3129
        self.dictionary = dictionary #词典,包含19901个单词,键:idx2word#['w1','w2',...,'w19901'],word2idx{'w1':1,'w2':2,...,'w19901':19901},padding_idx=19901,ntoken=19901
        self.relation_type = relation_type
        self.adaptive = adaptive #数据集是否是自适应的10-100个区域的
        prefix = '36'
        if 'test' in name:
            prefix = '_36'
        #加载hdf5文件目录
        h5_dataroot = dataroot+"/Bottom-up-features-adaptive"\
            if self.adaptive else dataroot+"/Bottom-up-features-fixed"
        imgid_dataroot = dataroot+"/imgids" #加载图像ids文件:
		#加载imgid2idx.pkl文件,保存再self.img_id2idx里:{id1:1,id2:2,...,id40504:40504}
        self.img_id2idx = pickle.load(open(os.path.join(imgid_dataroot, '%s%s_imgid2idx.pkl' %
                              (name, '' if self.adaptive else prefix)), 'rb'))
        #加载hdf5文件
        h5_path = os.path.join(h5_dataroot, '%s%s.hdf5' %
                               (name, '' if self.adaptive else prefix))

        print('loading features from h5 file %s' % h5_path)
        with h5py.File(h5_path, 'r') as hf:
            # self.features = np.array(hf.get('image_features'))
            self.features = np.array(hf.get('image_features'),dtype='float32')

            self.normalized_bb = np.array(hf.get('spatial_features'),dtype='float32')

            self.bb = np.array(hf.get('image_bb'),dtype='float32')
            print("hdf5数据加载成功!")
            if "semantic_adj_matrix" in hf.keys() \
               and self.relation_type == "semantic":
                self.semantic_adj_matrix = np.array(
                                        hf.get('semantic_adj_matrix'))
                print("Loaded semantic adj matrix from file...",
                      self.semantic_adj_matrix.shape)
            else:
                self.semantic_adj_matrix = None
                print("Setting semantic adj matrix to None...")
            if "image_adj_matrix" in hf.keys()\
               and self.relation_type == "spatial":
                self.spatial_adj_matrix = np.array(hf.get('image_adj_matrix'))#从文件加载空间的形容词矩阵
                print("Loaded spatial adj matrix from file...",
                      self.spatial_adj_matrix.shape)
            else:
                self.spatial_adj_matrix = None
                print("Setting spatial adj matrix to None...")

            self.pos_boxes = None
            if self.adaptive:
                self.pos_boxes = np.array(hf.get('pos_boxes'),dtype='float32')
        self.entries = _load_dataset(dataroot, name, self.img_id2idx,
                                     self.label2ans)
        self.tokenize()
        print("数据加载成功!")
        self.tensorize()
        self.nongt_dim = nongt_dim
        self.emb_dim = pos_emb_dim
        self.v_dim = self.features.size(1 if self.adaptive else 2)
        self.s_dim = self.normalized_bb.size(1 if self.adaptive else 2)

    def tokenize(self, max_length=14):
        """Tokenizes the questions.

        This will add q_token in each entry of the dataset.
        -1 represent nil, and should be treated as padding_idx in embedding
        """
        for entry in self.entries:
            tokens = self.dictionary.tokenize(entry['question'], False)
            tokens = tokens[:max_length]
            if len(tokens) < max_length:
                # Note here we pad to the back of the sentence
                padding = [self.dictionary.padding_idx] * \
                          (max_length - len(tokens))
                tokens = tokens + padding
            utils.assert_eq(len(tokens), max_length)
            entry['q_token'] = tokens

    def tensorize(self):
        self.features = torch.from_numpy(self.features)
        self.normalized_bb = torch.from_numpy(self.normalized_bb)
        self.bb = torch.from_numpy(self.bb)
        if self.semantic_adj_matrix is not None:
            self.semantic_adj_matrix = torch.from_numpy(
                                        self.semantic_adj_matrix).double()
        if self.spatial_adj_matrix is not None:
            self.spatial_adj_matrix = torch.from_numpy(
                                        self.spatial_adj_matrix).double()
        if self.pos_boxes is not None:
            self.pos_boxes = torch.from_numpy(self.pos_boxes)

        for entry in self.entries:
            question = torch.from_numpy(np.array(entry['q_token']))
            entry['q_token'] = question

            answer = entry['answer']
            if answer is not None:
                labels = np.array(answer['labels'])
                scores = np.array(answer['scores'], dtype=np.float32)
                if len(labels):
                    labels = torch.from_numpy(labels)
                    scores = torch.from_numpy(scores)
                    entry['answer']['labels'] = labels
                    entry['answer']['scores'] = scores
                else:
                    entry['answer']['labels'] = None
                    entry['answer']['scores'] = None

    def __getitem__(self, index):
        entry = self.entries[index]
        raw_question = entry["question"]
        image_id = entry["image_id"]

        question = entry['q_token']
        question_id = entry['question_id']
        if self.spatial_adj_matrix is not None:
            spatial_adj_matrix = self.spatial_adj_matrix[entry["image"]]
        else:
            spatial_adj_matrix = torch.zeros(1).double()
        if self.semantic_adj_matrix is not None:
            semantic_adj_matrix = self.semantic_adj_matrix[entry["image"]]
        else:
            semantic_adj_matrix = torch.zeros(1).double()
        if not self.adaptive:
            # fixed number of bounding boxes
            features = self.features[entry['image']]
            normalized_bb = self.normalized_bb[entry['image']]
            bb = self.bb[entry["image"]]
        else:
            features = self.features[
                self.pos_boxes[
                    entry['image']][0]:self.pos_boxes[entry['image']][1], :]
            normalized_bb = self.normalized_bb[
                self.pos_boxes[
                    entry['image']][0]:self.pos_boxes[entry['image']][1], :]
            bb = self.bb[
                self.pos_boxes[
                    entry['image']][0]:self.pos_boxes[entry['image']][1], :]

        answer = entry['answer']
        if answer is not None:
            labels = answer['labels']
            scores = answer['scores']
            target = torch.zeros(self.num_ans_candidates)
            if labels is not None:
                target.scatter_(0, labels, scores)
            return features, normalized_bb, question, target,\
                question_id, image_id, bb, spatial_adj_matrix,\
                semantic_adj_matrix

        else:
            return features, normalized_bb, question, question_id,\
                question_id, image_id, bb, spatial_adj_matrix,\
                semantic_adj_matrix

    def __len__(self):
        return len(self.entries)

entries
entries是数据的条目,类型是list,共214354条数据,每条数据是一个字典。
每条数据如下:

键值含义值
question_id问题id42000
image_id图像id42
image图像37244
question问题文字表示‘What color are the gym shoes?’
answer答案:label,score{‘labels’: tensor([ 4, 1594], dtype=torch.int32), ‘scores’: tensor([1.0000, 0.3000])}
q_token问题索引向量表示tensor([ 0, 10, 68, 11, 2618, 225, 19901, 19901, 19901, 19901,19901, 19901, 19901, 19901], dtype=torch.int32)

2. 模型需要传入的getitem数据返回 :如果是固定36个区域

变量名来源
featuresself.features[entry[‘image’]],此处的image是位置
normalized_bbself.normalized_bb[entry[‘image’]]
questionentry[‘q_token’]
targetscatter_(0, labels, scores)
question_identry[‘question_id’]
image_identry[“image_id”]
bbself.bb[entry[“image”]]
spatial_adj_matrixself.spatial_adj_matrix[entry[“image”]]
semantic_adj_matrixself.semantic_adj_matrix[entry[“image”]]
VQA 2.0数据集的学习和使用过程 该文章记录本人第一次对VQA 2.0数据集进行研究的全过程。某博主的指点,帮了我不少。非常感激!VQA任务就是给定一张图片和一个问题,模型要根据给定的输入来进行回答。很明显,VQA任务的输入有两个(image和question),对于如何提取image的feature,这里就不在赘述, 可以使用CNN提取特征的方式,CNN可以选择Resnet、VGG等骨干网络(去除pooling和fc层)。对于如何提取question的特征,一般的做法是,由于question本身是文字,需要转换为对应的向量形式。 阅读详情

相关推荐

「洞幺邦」基于深度学习生成自己的图像问答模型

关键词:图像问答 深度学习 卷积神经网络 循环神经网络 python VQA 是什么?:Visual Question Answering 我们可以这样定义:“视觉问答(VQA)是一种系统,它将图像和自然语言问题作为输入, 并生成自然语言答案作为输出。” 就和下面这张图片类似:输入这张图片和问题,我们期望的答案或许是 black and banana。 VQA 的应用:盲人的视觉问答,搜索引擎(不单单是以图搜图或者以文字搜信息,而是结合 图+问题,搜索出答案),智能驾驶领域,医疗问答等领域。 VQA 的框

dongyaobang的博客 403

Easy-edit VQA复现记录

Can We Edit Multimodal Large Language Models? 复现记录

sev7777777的博客 553

VQA数据集介绍

xiashilin的博客 4189

多模态VQA24

视觉问答、多模态

weixin_43120420的博客 453

PyTorch基础-数据的变换(Transforms)(3)

在上一节中自定义的数据集或者预加载的数据集得到的数据,并不总是以最终处理的形式出现在训练机器学习算法中。所以需要使用 变换 来处理数据并使其适合训练。所有 TorchVision 数据集都有两个参数,torchvision.transforms 模块提供开箱即用的几个常用转换: (1)transform修改功能和 target_transform修改标签 (2)接受包含转换逻辑的可调用对象。 FashionMNIST 特征是 PIL 图像格式,标签是整数。 对于训练,需要将特征作为归一化张量,并将标签

2578

TextVQA:TextVQA数据集的网站

TextVQA网站 该项目是使用create-react-app 。 要运行它,请按照以下说明进行操作: 安装节点的最新版本。 (最好通过安装) 通过npm install -g yarn 克隆存储库,并在其中cd frontend && yarn install 。 现在运行yarn start ,您的网站应该会在浏览器中弹出。 执照 在文件中找到LICENSE。

python打乱字典键对应的值

注意字典和列表的转换 参考连接1 参考连接2 import random path = 'train_test_ans2label.pkl' # path='/root/……/aus_openface.pkl' pkl文件所在路径 f = open(path, 'rb') data = pickle.load(f) print(data) print('----------------------------------------------------------') k = data.ke

weixin_45347379的博客 457

vqa:视觉问答

VQA 视觉问答 运行代码 该模型基于在运行代码之前,请从下载相关的训练,验证和测试数据。下面的部分根据需要Resnet-18或CNN的结果告诉您要运行哪些脚本 有线电视新闻网 我们按照以下顺序运行脚本以获得最佳结果 image_preprocessing_CNN.py 这将从图像中提取特征 preprocess-QA.py 这从提出的问题中提取特征 train_models_cnn.py 这使用L2正则化训练了50个时期的模型0.0005 view-logs.py logs/<log> 打印出结果 ResNet-18 我们按照以下顺序运行脚本以获得最佳结果 image_preprocessing_resnet18.py 这将从图像中提取特征 preprocess-QA.py 这从提出的问题中提取特征 train_models.py 这使用L2正则化0.001训练了50个时

VQA任务学习记录1(附数据使用代码记录)

VQA任务的数据处理和代码学习

a645676的博客 4129

easy-VQA:Easy Visual Questioning Answering数据集

易vqa Easy Visual Question Answering(easy-VQA)数据集的官方存储库。 包含: 数据集的官方 用于生成数据集的源代码 阅读以获取更多信息。 关于数据集 easy-VQA包含 4,000张火车图像和38,575条火车问题。 1,000个测试图像和9,673个测试问题。 总共13个可能的答案。 28,407个是/否的培训问题。 7,136个是/否的测试问题。 所有图像均为64x64彩色图像。 查看在数据集上训练的模型的。 范例图片 (以上这些图片链接仅适用于Github ) 示例问题 矩形是什么颜色? 图像中是否包含三角形? 没有蓝色的形状吗? 图像包含什么形状? 安装套件 pip install easy-vqa 使用包装 问题 每个问题分为三个部分: 问题文字 答案 图片编号 问题获取器为3个部分中的每个部分返回对应

VQA_ReGAT:ICCV 2019研究论文“用于视觉问题回答的关系感知图注意力网络”

视觉问题回答的关系感知图注意力网络 该存储库是的。 该存储库基于@ hengyuan-hu的和@ Jin-Hwa Kim的,并受其启发。 我们衷心感谢您分享代码。 先决条件 您可能需要一台具有4个GPU(每个GPU具有16GB内存)的计算机,以及用于Python 3的PyTorch v1.0.1。 使用CUDA10.0和Python 3.7安装 。 安装 。 安装 。 如果您使用的是miniconda,则可以使用tools/environment.yml安装所有必备组件。 数据 我们的实现使用了的预训练功能,每个图像具有10-100个自适应功能。 除此之外,还有GloVe载体和Visual Genome问题答案对。 为了方便起见,以下脚本可帮助您下载预处理的数据。 source tools/download.sh 除了数据之外,此脚本还下载了一些预训练的模型。 最后,应按如下

【函数小trick】torch中scatter()、scatter_()详解(多标签one-hot向量生成)

1. 背景 可以先看torch官方文档介绍: 主要作用是根据索引值index,向tensor中指定dim维度的index位置写入scr所对应的数值,可以用来生成one-hot向量和特定mask,熟练使用该函数,就不用暴力for循环啦。 2. 函数应用 (1)one-hot向量生成 将图像的标签值转换为一组只有0和1组成的向量,这是DL领域常用到的。 import torch targets=torch.zeros(3,5) index = torch.LongTensor([[3],[2]

诸葛灬孔暗 1550

【AI Infra】【RLHF框架】VeRL中WorkerGroup与Ray资源调度的协同机制剖析

本文深入剖析了VeRL框架中WorkerGroup与Ray资源调度的协同机制。通过解析Ray Placement Group的资源抽象和VeRL的RayResourcePool封装,详细阐述了WorkerGroup如何与底层资源精确绑定,并实现RLHF训练中异构、多阶段任务的灵活资源分配与动态调整,为大规模分布式强化学习训练提供了高效解决方案。

weixin_29204205的博客 391

lxmert部分代码的一点理解

代码连接:https://github.com/airsplay/lxmert 从训练vqa的命令看齐

冬炫的博客 2248

【CUT&TAG分析-加了spike in的样品】

使用 Bowtie2 或 Subread (subjunc) 来构建大肠杆菌的索引。bowtie2比对时设置参数–local, 局部比对。

weixin_57975238的博客 1400

详述字符集与汉字编码

字符集与字符编码是文本处理的基础概念。字符集定义字符集合(如ASCII、GB2312、Unicode),字符编码则规定字符如何存储为二进制数据。汉字编码经历了从区域化(GB2312、GBK、BIG5)到全球化(Unicode)的演进,Unicode通过UTF-8、UTF-16等编码方案实现跨语言兼容。UTF-8因兼容ASCII、节省空间且无乱码风险,成为中文互联网的主流编码。正确处理编码问题需统一标准、明确声明格式,并注意生僻字的特殊处理。

零零发不爱ai的博客 806

Text-VQA数据集以及方法总结

TextVQA数据集: ST-VQA | Paper | Download Text-VQA | Paper | Download OCR-VQA | Paper | Download STE-VQA | Paper | 方法: M4C | Paper | Code | 笔记 SA-M4C | Paper | 笔记 SMA | Paper | 笔记 MM-GNN | Paper LoRRA | Paper | Code QA R-CNN | Paper

学无止境 1万+

手机也能跑大模型?QNN框架实战:从模型量化到Android部署全流程

本文详细介绍了如何利用QNN框架将大模型部署到Android手机端进行端侧推理。通过实战演示了从模型量化(如INT4/INT8混合精度)到Android应用集成的全流程,包括内存优化、性能调优及常见问题排查,帮助开发者实现大模型在资源受限设备上的高效本地运行。

joy55的博客 501

【Pytorch】scatter函数详解

转自:https://blog.youkuaiyun.com/guofei_fly/article/details/104308528 在pytorch中,scatter是一个非常实用的映射函数,其将一个源张量(source)中的值按照指定的轴方向(dim)和对应的位置关系(index)逐个填充到目标张量(target)中,其函数写法为: target.scatter(dim, index, src) 其中各变量及参数的说明如下: target:即目标张量,将在该张量上进行映射 src:即源张量,将把该张

子燕若水的博客 7803

YOLOv11模型改进:利用注意力机制实现小目标检测精度跃升

如果你在实操中遇到精度提升不明显或速度下降过多的问题,不妨尝试调整注意力模块的类型(如替换为CA)或插入层级,或针对性优化小目标的数据集增强策略。记住,小目标检测的核心是“特征强化与空间定位”,只要结合业务场景灵活调整注意力模块的组合,你也能让YOLOv11在小目标识别任务中脱颖而出。接下来,我们从模块选型到代码落地,一步步带你打造“小目标检测专精版”YOLOv11,真正帮你解决工业场景中(如安防、质检)的小目标识别痛点。在城市安防场景中,改进后的YOLOv11对远处行人、车辆(小目标)的识别准确率提升。

m0_71589036的博客 454

使用 MATLAB/Simulink 构建一个基于FOC控制的PMSM矢量控制仿真模型

本教程详细介绍了基于Simulink的永磁同步电机(PMSM)磁场定向控制(FOC)仿真建模过程。主要内容包括:PMSM电机参数设置、Clarke/Park变换模块设计、电流环PID控制器构建、SVPWM调制实现等关键步骤。教程提供了完整的建模流程、参数配置建议和仿真调试方法,并给出了PID整定技巧和进阶优化方向。通过该模型,可深入理解PMSM矢量控制原理,掌握高性能电机控制系统的建模技术,为伺服系统、电动汽车驱动等应用领域提供仿真基础。教程还推荐了使用PIDTuner工具进行参数优化,并提出了加入负载扰动

amy_mhd的博客 644

pytorch和tensorflow实现one-hot编码,label编码为target

在我们实现网络训练或者自定义loss函数式,要计算预测图score和GT图target之间的loss时,score和target的shape需要保持一致,而标签数据label通常只是索引信息,我们需要将label数据通过onehot编码转化为向量(矩阵)target,在target中对应label索引的位置为1.0,其余为0.0,通常label类型为int,转化后的target为float 首先...

gefeng1209的博客 2065

Onnxruntime之YOLOP部署过程记录

魔改YoloP部署过程记录

如果想成为中心,那么就到中心去吧。 1928

目前开源数据集整理

Attention! 我的Dr.Sure项目正式上线了,主旨在分享学习Tensorflow以及DeepLearning中的一些想法。期间随时更新我的论文心得以及想法。 Github地址:https://github.com/wangqingbaidu/Dr.Sure 优快云地址:http://blog.youkuaiyun.com/wangqingbaidu 个人博客地址:http://www.wa...

人生而孤独,却不甘寂寞。 6万+

LangGraph教程8:LangGraph流式处理

流式处理可显著提升基于LLM应用的响应性。LangGraph支持两种流式模式:values模式返回每一步的完整结果,适合需要完整上下文处理的场景;updates模式仅返回增量变化,适用于实时更新需求。示例代码展示了如何用create_react_agent实现这两种模式,其中values模式完整记录处理流程,updates模式逐步输出结果。通过异步迭代输出流,开发者可以灵活选择适合应用场景的流式处理方式。

Cachel Wood的博客 622

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

【数据处理】之读取hdf5文件

hdf5文件 HDF5是一种常见的跨平台数据存储文件,可以存储不同类型的图像和数码数据,并且可以在不同类型的机器上传输,同时还有统一处理这种格式的函数库 HDF5文件一般以.h5和.hdf5作为后缀名,hdf5文件结构中有2个主要对象:Groups和Datasets, Groups:类似于文件夹,每个hdf5文件其实就是根目录group Datasets:类似于Numpy中的数组 hdf5读取 参考 #!/usr/bin/python # -*- coding: UTF-8 -*- # # Create

snow_maple521的博客 6960

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

上一篇: 【数据处理】之读取hdf5文件
下一篇: VQA-ReGat 项目运行遇到的错误
snow5618
博客等级 码龄9年 141粉丝 51原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值