TypeError:fit_generator() 为参数“steps_per_epoch”获得了多个值
Posted
技术标签:
【中文标题】TypeError:fit_generator() 为参数“steps_per_epoch”获得了多个值【英文标题】:TypeError: fit_generator() got multiple values for argument 'steps_per_epoch' 【发布时间】:2021-06-13 04:54:44 【问题描述】:我正在尝试训练 keras 模型。下面是训练模型的函数。
def train_model(input_videos, video_label, mapping, micro_expressions, val_x=None, val_micro=None, val_y=None, return_best=False):
print("train_model")
input_videos = np.asarray(input_videos)
data_x, data_y, data_mapping, data_micro = H1_preprocessing(input_videos, video_label, mapping, micro_expressions)
model, callbacks_lst = build_model()
print("data_x: ", data_x.shape)
print("data_y: ", data_y.shape)
if val_x is not None and val_y is not None and val_micro is not None:
hist = model.fit_generator([data_x, data_micro[0], data_micro[1], data_micro[2]], data_y, steps_per_epoch = 2, epochs = 20, verbose = 2, callbacks = callbacks_lst, validation_data=([val_x, val_micro[0], val_micro[1], val_micro[2]], val_y), use_multiprocessing=True, shuffle=True)
print(hist)
else:
hist = model.fit_generator([data_x, data_micro[0], data_micro[1], data_micro[2]], data_y, steps_per_epoch = 2, epochs = 20, verbose = 2, callbacks = callbacks_lst, use_multiprocessing=True, shuffle=True)
print(hist)
if return_best:
print("Applying weights")
model.load_weights("weights.best.hdf5")
model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
return model
fit_generator() 函数会产生错误。我不知道在正确的位置提供正确的参数。它显示以下错误。
Traceback(最近一次调用最后一次):文件“concatenated_classifier.py”, 第 697 行,在trained_model = train_model(list_gray_train_videos, list_train_label, clips_mapping, micro_expressions, 无, 无, 无, 真)文件“concatenated_classifier.py”,第 613 行,在 train_model hist = model.fit_generator([data_x, data_micro[0], data_micro1, data_micro[2]], data_y, steps_per_epoch = 2, epochs = 20, verbose = 2, callbacks = callbacks_lst, use_multiprocessing=True, shuffle=True) 文件 "C:\Users\Me\Anaconda3\lib\site-packages\keras\legacy\interfaces.py", 第 91 行,在包装器中返回 func(*args, **kwargs) 类型错误: fit_generator() 为参数 'steps_per_epoch' 获得了多个值
建议我在哪里提供 steps_per_epoch 和 data_y。
【问题讨论】:
【参考方案1】:错误是您首先提供了两个位置参数[data_x, data_micro[0], data_micro[1], data_micro[2]]
和data_y
,并且假设steps_per_epoch
参数是fit_generator
的第二个参数(请参阅tensorflow docs),变量data_y
将是用于steps_per_epoch
参数。然后,您使用关键字参数为steps_per_epoch
提供另一个值,这会导致错误。另见this *** answer。为了解决这个问题,请确保只提供位置参数,它应该是一个数据生成器。
【讨论】:
以上是关于TypeError:fit_generator() 为参数“steps_per_epoch”获得了多个值的主要内容,如果未能解决你的问题,请参考以下文章
Keras:网络不使用 fit_generator() 进行训练
fit_generator() 缺少 1 个必需的位置参数:“生成器”