当前位置: 首页 > wzjs >正文

宁波三盛网络网站建设黄页网址大全

宁波三盛网络网站建设,黄页网址大全,天津百度分公司,移动互联网服务管理中心问题描述 我在使用 transformers.Trainer 训练我的模型时,我自定义了 compute_loss 函数和compute_metrics函数,我的模型是一个简单的二分类模型。 在自定义 compute_loss 时这样写的: def compute_loss(self, model, inputs, return_outp…

问题描述

我在使用 transformers.Trainer 训练我的模型时,我自定义了 compute_loss 函数和compute_metrics函数,我的模型是一个简单的二分类模型。

在自定义 compute_loss 时这样写的:

def compute_loss(self, model, inputs, return_outputs=False):"""重写 Trainer.compute_loss:1) 提取字典中的 images, bboxes, locs, labels 等2) 用 vision_encoder 先处理图像,得到特征3) 用下游 model 做预测4) 计算并返回 loss"""# 前向传播outputs, labels = model(**inputs)  # (bz, num_classes), or (bz*num_frames, num_classes)batch_size = inputs['labels'].shape[0]outputs = outputs.squeeze()  # (bz*num_frames)if batch_size == 1:outputs = outputs.unsqueeze(0)# 计算 lossloss = self.loss_func(outputs, labels.float())if self.state.global_step % 10 == 0 and self.state.global_step > 0:# 以50个step为间隔打印pred_probs = torch.sigmoid(outputs)preds = (pred_probs > 0.5).int()logger.info(f"[global_step={self.state.global_step}] preds={preds.tolist()} / labels={labels.tolist()} / loss={loss.item():.4f}")# compute metricaccuracy = accuracy_score(labels.cpu().numpy(), preds.cpu().numpy())precision = precision_score(labels.cpu().numpy(), preds.cpu().numpy())recall = recall_score(labels.cpu().numpy(), preds.cpu().numpy())logger.info(f"[global_step={self.state.global_step}] accuracy={accuracy:.4f} / precision={precision:.4f} / recall={recall:.4f}")# 返回 (loss, outputs) 或者只返回 lossreturn (loss, outputs) if return_outputs else loss

于是就出现了报错,像这样的:

File "/opt/conda/lib/python3.9/site-packages/transformers/trainer.py", line 3754, in predictoutput = eval_loop(File "/opt/conda/lib/python3.9/site-packages/transformers/trainer.py", line 3966, in evaluation_loopmetrics = self.compute_metrics(EvalPrediction(predictions=all_preds, label_ids=all_labels))File "/workspace/train/object_query/train.py", line 281, in compute_metricscorrect_num = preds == labels
ValueError: operands could not be broadcast together with shapes (11720,) (12104,)output = eval_loop(File "/opt/conda/lib/python3.9/site-packages/transformers/trainer.py", line 3966, in evaluation_loopmetrics = self.compute_metrics(EvalPrediction(predictions=all_preds, label_ids=all_labels))File "/workspace/train/object_query/train.py", line 281, in compute_metricscorrect_num = preds == labels
ValueError: operands could not be broadcast together with shapes (11720,) (12104,)

原因

该问题是 transformers.Trainer 内部有一段对outputs的操作造成的:

if isinstance(outputs, dict):logits = tuple(v for k, v in outputs.items() if k not in ignore_keys + ["loss"])
else:logits = outputs[1:]

这里当 outputs 不是字典时,会把第一个位置的元素offset掉。

解决

Refer to here
所以,我们应该在返回那里这样写:

return (loss, {"label": outputs}) if return_outputs else loss
http://www.dtcms.com/wzjs/823153.html

相关文章:

  • 汽车之家网站是谁做的网站建建设
  • 南昌做网站的公司哪里好wordpress个人展示
  • 网站建设图片怎么动win2003 做网站服务器
  • 网站建设 意识形态小黄猫传媒有限公司官方首页
  • 网站建设 百度百科关于做网站的调查问卷
  • 网站开发用python吗急招室内设计师
  • 如何用php做网站管理系统营销型网站设计的内容
  • 网络违法犯罪举报网站深圳制作网站建设的企业
  • 商城网站开发的完整流程如何做电商新手入门
  • 网站友链邢台网站制作平台
  • 内江建设局网站画册设计网站推荐
  • 网站 拉新西安网页设计培训班
  • 站长之家网站模板中国新闻社简介
  • 上海模板网站辽宁城乡建设部网站首页
  • 建行官方网站首页沈阳手机网站
  • 网站建设主要业务流程设定优秀的网站有哪些内容
  • 牡丹江百度推广百度seo优化方法
  • 永久免费建站空间photoshop手机版
  • 网站开发费用多少网络营销论坛有哪些
  • 建设银行网站打不井网站建设mrd文档模板
  • 容桂手机网站建设现在还有企业做网站吗
  • 外国人可以在中国做网站吗app软件开发制作公司
  • 大连微信网站深圳宝安区邮编
  • 网站备案需要多久网站设计 网络推广的服务内容
  • 优酷wordpress建站教程在哪里推广自己的产品
  • 建免费的网站全国最缺工100个职业排行出炉
  • 网站设计建设公司教程广州网站手机建设公司
  • 做网站用什么字体字号微信制作小程序的软件
  • 百度微建站wordpress管理员账号
  • 网站首页为什么不收录施工企业负责人每月带班时间不少于