我使用tf.Dataset和tf.Data.Iterator而不是占位符作为输入训练了VGG13,如何在加载模型时进行自定义预测?
通常,如果我的模型是使用占位符训练的,则可以使用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
不是占位符,如果我想在训练后加载模型,如何将数据馈送到以下转换层并获得预测?