«ValueError: установка элемента массива с помощью последовательности. Запрошенный массив имеет неоднородную форму после Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 «ValueError: установка элемента массива с помощью последовательности. Запрошенный массив имеет неоднородную форму после

Сообщение Anonymous »

Я запускаю файл Python «data_prep.py», в котором он подготавливает и загружает данные изображения для использования в модели машинного обучения, особенно для задач классификации, включающих изображения разных категорий. Однако каждый раз, когда я пытался вернуть значение в prep_and_load_data(), я получал сообщение об ошибке:

Код: Выделить всё

import math
import os
from random import shuffle
import constants as CONST
import cv2
import pickle
import glob
import numpy as np

def get_size_statistics():
heights = []
widths = []
img_count = 0
DIR = CONST.TRAIN_DIR2
for img in os.listdir(CONST.TRAIN_DIR2):
path = os.path.join(DIR, img)
data = cv2.imread(path)
# data = np.array(Image.open(path))
heights.append(data.shape[0])
widths.append(data.shape[1])
img_count += 1
avg_height = sum(heights) / len(heights)
avg_width = sum(widths) / len(widths)
print("Average Height: " + str(avg_height))
print("Max Height: " + str(max(heights)))
print("Min Height: " + str(min(heights)))
print('\n')
print("Average Width: " + str(avg_width))
print("Max Width: " + str(max(widths)))
print("Min Width: " + str(min(widths)))

def label_img(name):
# print(name)
word_label = name.split('.')[0]
# word_label = 'cat'
label = CONST.LABEL_MAP[word_label]
label_arr = np.zeros(2)
label_arr[label] = 1
return label_arr
def prep_and_load_data():
DIR2 = CONST.TRAIN_DIR2
data = []
image_paths = os.listdir(DIR2)
shuffle(image_paths)
count = 0
max_images = 100
for img_path in image_paths:
# Skip directories and non-image files
if not img_path.endswith(('.jpg', '.jpeg', '.png')):
print(f"Skipping non-image file or directory: {img_path}")
continue

label = label_img(img_path)
path = os.path.join(DIR2, img_path)
image = cv2.imread(path)
image = cv2.resize(image, (CONST.IMG_SIZE, CONST.IMG_SIZE))
image = image.astype('float') / 255.0
data.append([image, label])
count += 1
# print(count)
if count == max_images:
print(f"Reached the limit of {max_images} images.")
break
shuffle(data)
print(len(data))
print('done')
print(np.array(data))
return data

if __name__ == "__main__":
prep_and_load_data()

Ошибка в вопросах заключается в следующем: я пытаюсь определить, что пошло не так, поскольку это уже существующий код, который я нашел на Github в учебных целях: «ValueError: Setting элемент массива с последовательностью. Запрошенный массив имеет неоднородную форму после двух измерений. Обнаруженная форма: (100, 2) + неоднородная часть."
Для записи, импорт констант. взято из этого кода:

Код: Выделить всё

TRAIN_DIR2 = 'Code\\dogs-vs-cats\\train\\train'
TEST_DIR2 = 'Code\\dogs-vs-cats\\test1\\test1'
CAT_LBL = 0
DOG_LBL = 1
CAT = 'cat'
DOG = 'dog'
LABEL_MAP = {
CAT: CAT_LBL,
DOG: DOG_LBL
}
DATA_SIZE = 18_000
IMG_SIZE = 110
SPLIT_RATIO = 0.8
Можно ли это исправить?

Подробнее здесь: https://stackoverflow.com/questions/790 ... rray-has-a
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»