Как протестировать модель TensorFlow для одного входного файла?
Я новичок в TensorFlow. Вышеприведенный код представляет собой код Python, который обучает NN задаче идентификации разговорного языка. Как я могу добавить возможность прогнозировать один аудиофайл и дать предсказывает имя класса (метки), а также как я могу сохранить классы (метки) в модели перед выводом?
from glob import glob
import os
import yaml
import math
import matplotlib.pyplot as plt
from tensorflow.keras.preprocessing.image import ImageDataGenerator
from tensorflow.keras.layers import Input, Concatenate
from tensorflow.keras.optimizers import RMSprop
from tensorflow.keras.applications.inception_v3 import InceptionV3
from tensorflow.keras.callbacks import EarlyStopping, LearningRateScheduler
def step_decay(epoch, lr):
drop = 0.94
epochs_drop = 2.0
lrate = lr * math.pow(drop, math.floor((1+epoch)/epochs_drop))
return lrate
main_dir = os.getcwd()
#Load configurations for startup
config_file_path = os.path.join(main_dir, "config.yaml")
config_file = open(config_file_path, 'r+')
main_config = yaml.safe_load(config_file)
languages = main_config["Languages"]
dataset_root_path = main_config["Target Root Path"]
batch_size = main_config["Batch Size"]
image_width = main_config["Image Width"]
image_height = main_config["Image Height"]
validation_split = main_config["Validation Split"]
initial_learning_rate = main_config["Initial Learning Rate"]
config_file.close()
categories = ["train", "test"]
train_path = dataset_root_path + categories[0]
num_classes = len(languages)
model_file = dataset_root_path + 'model.h5'
all_files = glob(train_path + '/*/*.png')
num_validation = len(all_files) * validation_split
num_train = len(all_files) - num_validation
validation_steps = int(num_validation / batch_size)
steps_per_epoch = int(num_train / batch_size)
print('Steps per Epoch: ' + str(steps_per_epoch))
print('Validation steps: ' + str(validation_steps))
image_data_generator = ImageDataGenerator(rescale=1./255, validation_split=validation_split)
train_generator = image_data_generator.flow_from_directory(train_path, batch_size=batch_size, class_mode='categorical', target_size=(image_height, image_width), color_mode='grayscale', subset='training')
validation_generator = image_data_generator.flow_from_directory(train_path, batch_size=batch_size, class_mode='categorical', target_size=(image_height, image_width), color_mode='grayscale', subset='validation')
#Model definition
img_input = Input(shape=(image_height, image_width, 1))
img_conc = Concatenate(axis=3, name='input_concat')([img_input, img_input, img_input])
model = InceptionV3(input_tensor=img_conc, weights=None, include_top=True, classes=2)
model.summary()
model.compile(optimizer=RMSprop(learning_rate=initial_learning_rate, clipvalue=2.0), loss='categorical_crossentropy', metrics=['accuracy'])
early_stopping = EarlyStopping(monitor='val_accuracy', mode='max', patience=10, restore_best_weights=True)
learning_rate_decay = LearningRateScheduler(step_decay, verbose=1)
history = model.fit(train_generator, validation_data=validation_generator, epochs=60, steps_per_epoch=steps_per_epoch, validation_steps=validation_steps, callbacks=[early_stopping, learning_rate_decay])
model.save(model_file)
Файл конфигурации (yaml) для проекта выглядит так:
Проект: Идентификация языка
Языки:
хы: Армянский
как: ассамский
Целевой корневой путь: /home/nn/Desktop/Language_Identification/Data/
Размер партии: 1
Ширина изображения: 500
Высота изображения: 128
Разделение проверки: 0,1
Начальная скорость обучения: 0,045