簡體   English   中英

錯誤在Python中一次產生兩個變量

[英]error yielding two variables at once in python

我在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所有不同排列images, steer從生成器中進行images, steer ,您需要執行以下操作...

for images, steer in batch_generator(data_dir, X_train, y_train, 5, True):
    # do something...

調用生成器時,將創建一個生成器對象,它是一個可迭代的實例。 如果您只需要從中提取一個可yield價值的值,則可以使用next

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM