Python中一次yield两个变量的错误

我在Python中编写一个函数,用于生成一批图像并将它们以两个变量的形式yield回主函数,但这会产生一个错误“预期解包2个值,但实际值过多”

尝试使用return替代,但得到了相同的错误,而当只返回一个变量时,它运行得很好。

这是生成器函数:

def batch_generator(data_dir, image_paths, steering_angles, batch_size, is_training):    images = np.empty([batch_size, IMAGE_HEIGHT, IMAGE_WIDTH, IMAGE_CHANNELS])    steers = np.empty(batch_size)    while True:        i = 0        for index in np.random.permutation(image_paths.shape[0]):            center, left, right = image_paths[index]            steering_angle = steering_angles[index]            # 增强            if is_training and np.random.rand() < 0.6:                image, steering_angle = augument(data_dir, center, left, right, steering_angle)            else:                image = load_image(data_dir, center)             # 将图像和转向角度添加到批次中            images[i] = preprocess(image)            steers[i] = steering_angle            i += 1            if i == batch_size:                break        print(images[0])        yield images, steers

这是调用它的代码行

images, steer = batch_generator(data_dir, X_train, y_train, 5, True)

我想同时返回steers和images,并且不能使用return,因为这会跳出循环


回答:

这是因为当你使用yield关键字时,它会让你的函数返回一个生成器对象而不是一个元组。为了从你的生成器中获取images, steer的所有不同排列,你需要像这样做…

for images, steer in batch_generator(data_dir, X_train, y_train, 5, 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中创建了一个多类分类项目。该项目可以对…

发表回复

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