1

Тема: Робота з ключами

Доброго дня
Недавно почав вивчати нейронімережі
Ось написав код для перетвореня даних в чила і винкла така помилк 
Traceback (most recent call last):
  File "D:\project\python\Neural network training\main.py", line 24, in <module>
    target.append(labels[label])
KeyError: 'T3.png'
Другий день намагаюся знайти інформацію як виправити і чому виникає і знаходжу тільки інформацію по те шо в назві файлу потрібно прибирати зайві символи але в мене вже прописано це в коді

label = filenames.split('_')[0]


Хто зная як це поправити ?

import os
import numpy as np
from PIL import Image
from sklearn.model_selection import train_test_split
from keras.utils import to_categorical

# Задаємо шлях до папки з даними
data_path = 'path/to/data/folder/'

# Задаємо список, який містить позначки для кожного зображення
labels = {'T3': 0, 'T2': 1, 'T4': 2}


# Створюємо порожні масиви для даних та міток
data = []
target = []

# Завантажуємо дані з файлів та додаємо до масивів
for filenames in os.listdir(data_path):
    label = filenames.split('_')[0]
    img = Image.open(os.path.join(data_path, filenames)).convert('L')
    img_arr = np.array(img, dtype=np.float32) / 255.0
    data.append(img_arr)
    target.append(labels[label])
    print(target)

# Перетворюємо мітки у числовий формат за допомогою one-hot encoding
target = to_categorical(labels)

# Розбиваємо дані на тренувальні та тестові
x_train, x_test, y_train, y_test = train_test_split(data, target, test_size=0.2, random_state=42)

2

Re: Робота з ключами

lipov написав:

в назві файлу потрібно прибирати зайві символи але в мене вже прописано це в коді

label = filenames.split('_')[0]

Дякую за гарно поставлене питання (дещо надмірне, насправді, але більшість новачків навпаки не надають достатньої інформації.
В цілому так, треба прибрати, але ваш викидає все після символу _, а цього символу в назві немає. Я так підозрюю, що вам насправді треба видалити розширення файлу:

label = os.path.splitext(filenames)[0]

ну і принагідно filenames (у множині) - погана назва для змінної, що містить одну назву файлу, трохи плутає. Має бути в однині.