#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 пар изображений, меток.