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

机械配件网站建设竞价推广开户公司

机械配件网站建设,竞价推广开户公司,专业网络推广服务,wordpress加速优化问题描述 我在使用 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/462645.html

相关文章:

  • 菏泽网站建设公司太原竞价托管公司推荐
  • 佛山网站优化排名推广今日微博热搜榜前十名
  • 建设好党建网站的重要性网站免费推广平台
  • 网站开发开题报告武汉seo优化服务
  • 小店怎么做网站人工智能培训
  • 怎么做自己的单机网站推广赚钱
  • 做网站怎么加bgm网站排名大全
  • 校园网站建设的意见与建议seo推广收费标准
  • 自己做微信小程序商城北京网站优化步骤
  • b2c网站开发公司苹果aso优化
  • 佛山做企业网站公司整合营销的案例
  • 建设银行官方网站网页版软件推广怎么赚钱
  • 上海网页制作与网站设计站长之家音效
  • 标准网站优势福州模板建站哪家好
  • 铁岭网站建设网络优化seo标题优化分析范文
  • 在vs中做网站郑州网站建设公司哪家好
  • 哈尔滨软件开发公司排名五年级下册数学优化设计答案
  • 深圳民治网站建设平谷头条新闻
  • 国外jquery网站游戏推广赚佣金
  • 重庆做网站代运营sem优化技巧
  • wordpress主题资源网优化落实疫情防控新十条
  • 青岛网站建设ihuibest产品网络推广方案
  • 做笔记的网站源码谷歌海外广告投放
  • 自己建的网站可以用笔记本做服务器吗企业seo如何优化
  • 网站代码备份seo优化教程自学
  • 广东疫情长沙网站seo公司
  • 深圳专业医疗网站建设做网站建设的公司
  • 韩国网站模板前端seo是什么
  • 网站建设日期如何查询泉州关键词搜索排名
  • 网站查询功能是用什么程序做的手机做网页的软件