首页 > 编程问答 >isinstance() arg 2 必须是类型、类型元组或联合

isinstance() arg 2 必须是类型、类型元组或联合

时间:2024-07-27 05:49:44浏览次数:7  
标签:python tensorflow huggingface fine-tuning

我在尝试训练模型时收到一条错误消息,但出于某种原因,每次更改模型时它都会给我相同的消息。

以下是代码:


# Define training arguments
training_args = TrainArgument(
    output_dir="bert_results",
    num_train_epochs=3,
    per_device_train_batch_size=8,
    per_device_eval_batch_size=32,
    warmup_steps=500,
    weight_decay=0.01,
    logging_dir="bert_results/logs",
    logging_steps=10,
)



# Initialize the TFTrainer
trainer = Trainer(
    model=model,
    args=training_args,
    train_dataset=train_dataset,
    eval_dataset=eval_dataset,
    loss_function=("categorical_crossentropy")
)

# Train the model
trainer.train()




What I am getting in return "Traceback (most recent call last):
  File "C:\Users\Jesh\PycharmProjects\Yelp\finetuning.py", line 44, in <module>
    trainer = Trainer(
              ^^^^^^^^
  File "C:\Users\Jesh\PycharmProjects\Yelp\venv\Lib\site-packages\tftrainer\trainer.py", line 32, in __init__
    if isinstance(callable, loss_function)
       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
TypeError: isinstance() arg 2 must be a type, a tuple of types, or a union" 

我正在开发一个机器学习项目,我在该项目中期望在运行特定脚本后生成我的微调模型。该脚本涉及使用自定义训练器类来训练模型。尽管对训练器类进行了各种修改以改进训练过程,但我始终遇到与模型状态相关的错误。

具体错误消息是:“状态错误”。此错误表明模型在训练过程中或训练后的状态管理存在问题。


错误信息“TypeError: isinstance() arg 2 must be a type, a tuple of types, or a union”表明传递给 loss_function 参数的内容不正确。传递的是字符串 ("categorical_crossentropy") ,而它应该是类似 tf.keras.losses.CategoricalCrossentropy 的可调用函数。

尝试将代码修改为以下内容以解决此问题:

import tensorflow as tf
from transformers import Trainer, TrainingArguments

# ...的代码...

# 初始化 TFTrainer
trainer = Trainer(
    model=model,
    args=training_args,
    train_dataset=train_dataset,
    eval_dataset=eval_dataset,
    loss_function=tf.keras.losses.CategoricalCrossentropy(),  # 修改此行
)

# ...的代码...

通过进行此更改,传递的是 tf.keras.losses.CategoricalCrossentropy 的实际可调用函数,而不是字符串表示形式。这应该可以解决遇到的 TypeError 并允许的代码正确运行。

如果在进行此更改后仍然遇到问题,请提供有关的 model train_dataset eval_dataset 的更多信息,以便我可以进一步帮助。

标签:python,tensorflow,huggingface,fine-tuning
From: 78799871

相关文章

  • Python griddata() 和 Matlab griddata():某些网格点的结果不同
    在将一些(相当大的物理)Matlab代码转换为Python时,我偶然发现了这种情况。当对相同的二维离散数据进行插值时,Python/Scipy的griddata()函数给出的结果与Matlab的对应函数不同。griddata()Matlab示例代码:Python示例代码:%Samplepoints(x,y):7x5=3......
  • Ebay Python SDK 仅在特定项目类别上返回错误
    我在一个项目中使用ebaySDK一段时间了。最近我尝试导入一些商品,例如手表、手机壳等...并且我使用了eBay自己通过eBay返回的英国商店页面上的类别ID他们的“get_category_suggestions”API端点,但eBay似乎有选择地决定拒绝某些项目并引发服务器错误!为了测试,我做了......
  • 使用特定的Python版本(MacOS)制作virtualenv
    我安装了brew,python3(默认和最新版本)和pip3,pyenv。TensorFlow现在不支持python3.7,所以我听说我应该制作一个独立运行3.6或更低版本的virtualenv。我安装了python3.6.7bypyenvinstall3.6.7但无法制作virtualenv-p3.6.7(mydir)因为3.6.7不在P......
  • 使用Python去除图像中的线条
    我正在尝试使用Python和cv2、numpy、skimage等从黑白图像中删除“阴影线”(如果图像中存在“阴影线”)。本质上,我的图像可以有1或2条曲线,如下例所示。但每条线都有一条1-5像素外的阴影线,需要删除。我怎样才能在Python中做到这一点?原始......
  • Python 和 OpenCV:如何裁剪半成形边界框
    我有一个为无网格表创建网格线的脚本:脚本之前:脚本之后:是否有一种简单的方法,使用OpenCV来裁剪“脚本之后”图像,使其仅包含四边边界框?示例输出:编辑:我目前正在研究一种解决方案,该解决方案可以找到垂直/水平方向的第一条/最后一条......
  • 使用类型提示将 Python 转换为 Cython
    类型提示现在在Python3.5版本中可用。在规范(PEP484)中,目标(和非目标)被明确暴露:#RationaleandGoals此PEP旨在为类型注释提供标准语法,开放Python代码更容易静态分析和重构、潜在的运行时类型检查以及(也许在某些情况下)利用类型信息生成代码。......
  • 在 Python 类型提示中区分 PySpark 和 Pandas DataFrame (PyCharm)
    在PyCharm中,如果使用apyspark.sql.DataFrame代替pandas.DataFrame,类型提示似乎不会触发警告,反之亦然。例如以下代码根本不会生成任何警告:frompyspark.sqlimportDataFrameasSparkDataFramefrompandasimportDataFrameasPandasDataFramedef......
  • 如何在Python中继承类型提示?
    所以我的问题是,当我有一个A类型的类来做事情并且我使用这些函数作为subclass(B)时,它们仍然是类A的类型,并且不接受我的类B对象作为参数或作为函数签名。我的问题简化了:fromtypingimportTypeVar,Generic,CallableT=TypeVar('T'......
  • Python - 如何传递类对象的函数参数类型(打字)
    我想python3.7附带了(不确定),不仅可以将变量名传递给函数,还可以传递变量的类型。我想知道的是是否有可能传递特定类的类型。以同样的方式传递:deffoo_func(i:int)->None:pass如果我有一个类,让我们说:classfoo_class(object):pass我如何转换fo......
  • 使用 Python 构建简单 REST API
    使用Python构建简单RESTAPI1.概述本技术文档旨在指导开发者使用Python框架Flask构建一个基本的RESTAPI。通过学习本指南,您将掌握创建、读取、更新和删除(CRUD)操作的基本知识,并能够使用Python构建自己的API。2.安装依赖首先,您需要确保已安装Python和Flask......