如何解决这个错误:’tuple’对象不是迭代器

我是一个AI初学者,需要在以下代码中得到一些帮助。

valcall = val_images,Yval_imagestraincall = train_images,Ytrain_imagescallbacks = [     EarlyStopping(monitor='val_loss', patience=15, verbose=1, min_delta=1e-5),     ReduceLROnPlateau(monitor='val_loss', factor=0.1, patience=5, cooldown=0, verbose=1, min_lr=1e-8),     ModelCheckpoint(monitor='val_loss', filepath='/content/drive/My Drive/TPU/testchange.hdf5', verbose=1,save_best_only=True, save_weights_only=True, mode='auto')    ]    model.fit_generator( traincall, epochs=epochs,steps_per_epoch=steps_per_epoch,verbose=1, callbacks=callbacks, validation_data=valcall)

我在训练模型时遇到了这个错误,我不明白需要更改哪个元组对象?请帮帮我,谢谢。

我遇到的错误是: enter image description here


回答:

在Python中,可迭代值和迭代器之间是有区别的。可迭代值(如tuple)是可以传递给iter并获取其迭代器的值。

>>> t = (1, 2)>>> type(t)<class 'tuple'>>>> type(iter(t))<class 'tuple_iterator'>

迭代器是可以传递给next并根据迭代器的内部状态返回下一个值的东西。

>>> itr = iter(t)>>> next(itr)1>>> next(itr)2

如你所见,元组是可迭代的,但不是迭代器。


在我看来,有两个原因导致这种区别经常被忽视。

  1. 迭代器的大多数使用都是由请求从可迭代对象获取迭代器的函数和构造完成的,这意味着你很少需要直接处理迭代器。例如,你可以写for i in some_list: ...,但for循环会为你获取列表迭代器iter(some_list)

  2. 一些可迭代对象,如文件对象,本身就是自己的迭代器。

    >>> f = open(".zshrc")>>> f is iter(f)True

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注