Как загружать изображения и текстовые метки для регрессии CNN из разных папок

#python #tensorflow #keras #conv-neural-network

#python #tensorflow #keras #conv-нейронная сеть

Вопрос:

У меня есть две папки: X_train и Y_train. X_train — это изображения, Y_train — векторные и текстовые файлы.txt. Я пытаюсь обучить CNN регрессии.

Я не мог понять, как принимать данные и обучать сеть. Когда я использую «ImageDataGenerator», предполагается, что папки X_train и Y_train являются классами.

 import os
import tensorflow as tf
os.chdir(r'C:\Data')
from glob2 import glob

x_files = glob('X_train\*.jpg')
y_files = glob('Y_rain\*.txt')
 

Выше я нашел их назначение, как я могу их взять и быть готовым к model.fit? Спасибо.

Ответ №1:

Убедитесь x_files , y_files что они отсортированы вместе, тогда вы можете использовать что-то вроде этого:

 import tensorflow as tf
from glob2 import glob
import os

x_files = glob('X_train\*.jpg')
y_files = glob('Y_rain\*.txt')

target_names = ['cat', 'dog']

files = tf.data.Dataset.from_tensor_slices((x_files, y_files))

imsize = 128

def get_label(file_path):
    label = tf.io.read_file(file_path)
    return tf.cast(label == target_names, tf.int32)

def decode_img(img):
    img = tf.image.decode_jpeg(img, channels=3)
    img = tf.image.convert_image_dtype(img, tf.float32)
    img = tf.image.resize(images=img, size=(imsize, imsize))
    return img

def process_path(file_path):
    label = get_label(file_path)
    img = tf.io.read_file(file_path)
    img = decode_img(img)
    return img, label

train_ds = files.map(process_path).batch(32)
 

Затем train_ds может быть передан model.fit() и вернет пакеты из 32 пар изображений, меток.