我在尝试训练模型时收到一条错误消息,但出于某种原因,每次更改模型时它都会给我相同的消息。
以下是代码:
# 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
的更多信息,以便我可以进一步帮助。