![](/img/trans.png)
[英]Sum of two 'np.longdouble' yielding numerical error unrelated to printing
[英]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.