Я обучил свой VGG13, используя tf.Dataset и tf.Data.Iterator, вместо заполнителей, в качестве входных данных, как я могу сделать собственный прогноз при загрузке модели?
Обычно, если моя модель обучается с использованием заполнителя, я мог бы использовать graph.get_operation_by_name()
, чтобы получить заполнитель и передать в него входные данные прогноза. Однако, когда нет местозаполнителя, я понятия не имею, как передать данные в модель.
Так я определяю свой набор данных. Файл .csv содержит имена файлов и метки данных. И все изображения находятся в папке.
def read_image(*row):
image = tf.read_file('data/' + feature.TRAIN_CURATED_IMAGE_DIR + '/' + row[0])
image = tf.reshape(tf.image.decode_jpeg(image), [self.img_height, self.img_width, self.input_x_dim])
image = tf.cast(image, tf.float32)
label = tf.cast(row[1:], tf.float32)
return image, label
path = 'data/' + feature.TRAIN_CURATED_IMAGE_LABEL_PATH
print('Using image input.')
print('Loading data from {}'.format(path))
dataset = tf.data.experimental.CsvDataset(path,
record_defaults=[tf.string]+[tf.int32 for _ in range(self.class_num)],
header=True)
dataset = dataset.map(read_image).shuffle(int(total_size*0.5))
# ...
self.next_element = iterator.get_next()
И вот как я устанавливаю свой ввод.
self.input_x = self.next_element[0]
self.input_y = self.next_element[1]
# Following conv layers...
Поскольку self.input_x
и self.input_y
не являются местозаполнителями, как я могу подать данные в следующие слои извещений и получить прогноз, если я хочу загрузить модель после тренировки?