[英]Getting an error: ValueError: too many values to unpack (expected 2)
我在“英特爾圖像分類”上練習 CNN,我寫了一個 function 來從不同的文件夾加載數據。 但是當我調用 function 時,我收到一個 ValueError,上面寫着“要解壓的值太多”。知道如何解決這個問題嗎?
def data_load():
datasets = ['seg_train\seg_train', 'seg_test\seg_test']
size = (150, 150)
output = []
for dataset in datasets:
directory = os.getcwd() + '/' + dataset
images = []
labels = []
for folder in os.listdir(directory):
curr_label = class_labels[folder]
for file in os.listdir(directory + '/' + folder):
img_path = directory + '/' + folder + '/' + file
curr_image = cv2.imread(img_path)
curr_image = cv2.resize(curr_image, size)
images.append(curr_image)
labels.append(curr_label)
images, labels = shuffle(images, labels)
output.append((images, labels))
return output
(X_train, y_train), (X_test, y_test) = data_load()
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-36-ec0ae2384d47> in <module>
----> 1 (X_train, y_train), (X_test, y_test) = data_load()
ValueError: too many values to unpack (expected 2)
做就是了
x,y=data_load()
然后訪問 x[0],x[1] 或以您的方式
Snehal R Ghungurde 回答正確。 我想我會詳細說明。
您的output.append((images, labels))
正在生成一個元組列表,其中每個元組由兩個列表組成。 但是,您正試圖將此列表解壓縮為兩個單獨的元組。
您當前的方法是同時加載訓練和測試數據集。 我會寫一個通用的 function,它執行以下操作:提供一個路徑,這個 function 將讀取所有圖像並返回帶有圖像和標簽的元組。
將變量作為參數(路徑、大小)放置也是有益的。
def data_load(path, size=(150, 150)):
"""
Provided with a path, this function will read
all images and return tuples with the images and labels
"""
output = []
images = []
labels = []
for folder in os.listdir(directory):
curr_label = class_labels[folder]
for file in os.listdir(directory + '/' + folder):
img_path = directory + '/' + folder + '/' + file
curr_image = cv2.imread(img_path)
curr_image = cv2.resize(curr_image, size)
images.append(curr_image)
labels.append(curr_label)
images, labels = shuffle(images, labels)
output.append((images, labels))
return output
training_set = 'seg_train\seg_train'
testing_set = 'seg_test\seg_test'
x_train, y_train = data_load(training_set)
x_test, y_test = data_load(testing_set)
引發此錯誤是因為data_load
返回兩個以上的變量,並且您試圖將其分配給兩個。 如果您在 return 語句之前添加行print(len(output))
,您會看到它的長度大於 2。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.