Я работаю над разработкой модели MTL. В модели есть две задачи: task1 и task2.
И я использовал собственный генератор данных, используя следующий код:
def get_data_generator(data, split ,batch_size=16):
imagePath = ''
df =''
if split == 'train':
imagePath = '../MTLData/train/'
df = data[data.dir == 'train']
elif split == 'test':
imagePath = '../MTLData/test/'
df = data[data.dir == 'test']
elif split == 'vald':
imagePath = '../MTLData/vald/'
df = data[data.dir == 'vald']
pfrID = len(data.PFRType.unique())
ftID = len(data.FuelType.unique())
images, pfrs,fts = [], [], []
while True:
for i in range(0,df.shape[0]):
r = df.iloc[i]
file, pfr, ft = r['Image'], r['PFRType'], r['FuelType']
im = Image.open(imagePath+file)
im = im.resize((224, 224))
im = np.array(im) / 255.0
images.append(im)
pfrs.append(to_categorical(pfr, pfrID))
fts.append(to_categorical(ft, ftID))
if len(images) >= batch_size:
yield np.array(images), [np.array(pfrs), np.array(fts)]
images, pfrs, fts = [], [], []
И модель устанавливается с помощью:
H = model3.fit_generator(generator=get_data_generator(labels,'train',batch_size),
steps_per_epoch=STEP_SIZE_TRAIN+1,
validation_data=get_data_generator(labels,'vald',batch_size),
validation_steps=STEP_SIZE_VALID+1,
epochs=EPOCHS
)
Теперь я хочу создать матрицу путаницы для task1 (pfr) и task2 (ft) для всего набора данных.
Я застрял здесь, поскольку не использую поток из структуры каталогов, а данные слишком велики для хранения в памяти. Может кто-нибудь помочь?