Настройка генератора данных для изучения скрытого слоя

Долгое время скрывался, впервые постер здесь :)

Я пытаюсь создать CNN на питоне, который будет принимать в качестве входных данных изображение и выводить 25 непрерывных значений, предсказанных из указанного изображения. У меня есть каталог, содержащий подкаталоги, каждый из которых содержит изображение в формате .jpg и соответствующие 25 значений, хранящихся в формате .csv. Я делал что-то подобное в прошлом, читая свои изображения и метки в виде массивов numpy, но подумал, что было бы разумно попытаться научиться делать это с помощью генераторов данных. Пока что мой код приведен ниже, но, насколько я могу судить, он не загружает наборы меток, поскольку моя модель продолжает возвращать ошибку, указывающую на отсутствие градиента для обучения.

Я делаю все в TensorFlow, но не обязательно женат на нем. Точно так же я могу регенерировать способ хранения моих изображений и меток, поэтому, если то, как я это сделал, является проблемой, я также буду рад изменить эту структуру.

Любая помощь или предложения приветствуются!

С использованиемЯ могу подтвердить, что изображения загружаются правильно.

Конкретная ошибка, которую я возвращаю, заканчивается

      
ValueError: No gradients provided for any variable:

Соответствующий код, который у меня есть до сих пор:

      
import os, shutil, csv
import tensorflow as tf
from tensorflow.keras.preprocessing.image import ImageDataGenerator

def data_generator(data_dir, batch_size):

# Set up the data generator

datagen = ImageDataGenerator(rescale=1./255)

    # Read in the data from the specified directory
    generator = datagen.flow_from_directory(
        data_dir,
        target_size=image_size,
        batch_size=batch_size,
        class_mode=None,  # since the labels are stored in separate .csv files
        shuffle=True
    )
    
    # Iterate over the data
    for data_batch, _ in generator:
        # Read in the corresponding .csv file for each image
        labels_batch = []
        for i, filename in enumerate(data_batch):
            # Get the file name without the extension
            file_base = os.path.splitext(filename)[0]
    
            # Read in the labels from the .csv file
            with open(file_base + '.csv', 'r') as csv_file:
                reader = csv.reader(csv_file)
                labels_batch.append(next(reader))
        yield data_batch, labels_batch

train_generator = data_generator(os.path.join(data_dir, 'train'), batch_size)

Немного пропуская

      
# Compile the model

model.compile(optimizer='adam', loss='mean_squared_error', metrics=\['accuracy'\])

# Train the model using the data generators

history = model.fit_generator(
train_generator,
steps_per_epoch=len(train_generator),
epochs=10,
validation_data=val_generator,
validation_steps=len(val_generator)
)

# Evaluate the model on the testing data

test_loss, test_acc = model.evaluate_generator(test_generator, steps=len(test_generator))

0 ответов

Другие вопросы по тегам