我正在Python中创建一个函数来生成一批图像并将其返回给两个变量的主函数,但这会产生此错误“太多值无法解压预期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]
# argumentation
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)
# add the image and steering angle to the batch
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)
我也想返回转向和图像,但不能使用 return,因为它会跳出循环
最佳答案
这是因为当您使用 yield
关键字时,它会使您的函数返回生成器对象而不是元组。为了从生成器中获取 images, steer
的所有不同排列,您需要执行以下操作...
for images, steer in batch_generator(data_dir, X_train, y_train, 5, True):
# do something...
关于python - 在 python 中同时产生两个变量时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56673878/