如何使用 Tensorflow 为花卉数据集创建使用文件路径的配对?

pythonserver side programmingprogrammingtensorflow

要创建 (图像,标签) 配对,首先将路径转换为路径组件列表。然后,将倒数第二个值添加到目录中。然后,将标签编码为整数格式。压缩字符串转换为张量,然后重新整形为所需大小。

阅读更多: 什么是 TensorFlow,以及 Keras 如何与 TensorFlow 配合使用来创建神经网络?

我们将使用花卉数据集,其中包含数千朵花的图像。它包含 5 个子目录,每个类都有一个子目录。

我们使用 Google Colaboratory 来运行以下代码。Google Colab 或 Colaboratory 有助于在浏览器上运行 Python 代码,并且不需要任何配置,并且可以免费访问 GPU(图形处理单元)。Colaboratory 是在 Jupyter Notebook 之上构建的。

print("Function to convert file path to (image,label) pair")
print("First, path is converted to list of path components")
print("Then, the second to last value is added to class directory")
print("The label is integer encoded")
def get_label(file_path):
   parts = tf.strings.split(file_path, os.path.sep)
   one_hot = parts[-2] == class_names
   return tf.argmax(one_hot)

print("The compressed string is converted to a 3 dimensional int tensor")
print("The image is resized to the required size")
def decode_img(img):
   img = tf.image.decode_jpeg(img, channels=3)
   return tf.image.resize(img, [img_height, img_width])

print("The raw data is loaded from the file as a string value")
def process_path(file_path):
   label = get_label(file_path)
   img = tf.io.read_file(file_path)
   img = decode_img(img)
   return img, label

代码来源:https://www.tensorflow.org/tutorials/load_data/images

输出

Function to convert file path to (image,label) pair
First, path is converted to list of path components
Then, the second to last value is added to class directory
The label is integer encoded
The compressed string is converted to a 3 dimensional int tensor
The image is resized to the required size
The raw data is loaded from the file as a string value

解释

  • 定义了一个 'get_label' 函数,将文件路径转换为 ​​(image,label) 对。
  • 文件路径转换为路径组件列表。
  • 将倒数第二个值添加到类目录中。
  • 接下来,将标签编码为整数。
  • 另一个名为 'decode_img' 的函数用于调整图像大小并返回它。
  • 首先将压缩字符串转换为三维整数张量,然后调整大小。
  • 定义了另一个名为 'process_path' 的函数,将文件中的原始数据加载为字符串值。

相关文章