我正在使用Tflite。我正在学习如何量化为INT8。
我正在使用Colab教程。
“ flowers_dir”是一个包含5个文件夹的文件夹(每个文件夹包含不同类型的花朵)。
'/*/*'
是什么意思?我的直觉告诉我,这是调用每个文件夹的内容。不确定。有没有像“教程”那样解释它?
# A generator that provides a representative dataset
def representative_data_gen():
dataset_list = tf.data.Dataset.list_files(flowers_dir + '/*/*')
for i in range(100):
image = next(iter(dataset_list))
image = tf.io.read_file(image)
image = tf.io.decode_jpeg(image, channels=3)
image = tf.image.resize(image, [IMAGE_SIZE, IMAGE_SIZE])
image = tf.cast(image / 255., tf.float32)
image = tf.expand_dims(image, 0)
yield [image]
答案 0 :(得分:1)
摘自https://www.tensorflow.org/api_docs/python/tf/data/Dataset#list_files上Dataset.list_files
的文档:
file_pattern
参数应为少量的glob模式。如果您的文件名已被收集,请改用Dataset.from_tensor_slices(filenames),因为用list_files重新混淆每个文件名可能会导致远程存储系统性能下降。
因此,我们知道您拥有的是全局模式。什么是球形模式? Google解救:https://en.wikipedia.org/wiki/Glob_(programming)。如其中所述:
*
是通配符,表示“任何字符串”
...因此,/*/*
意味着您拥有一个可以包含任何字符串的目录,我们在其中查找 other 文件,其名称实际上也可以是任何字符串