tensorflow之准备好自己的train.txt和val.txt

   学习tensorflow时需要准备好自己的训练集train.txt 把训练图片给打上分类标签  和训练过程中的测试集val.txt 要给打上分类标签。

这样就需要你准备好train.txt和val.txt。怎样快速准备好自己的标签。可用shell脚本进行快速生成。

</pre><pre name="code" class="plain">#!/usr/bin/env sh
DATA=data/zhao/
MY=examples/zhaofile

echo "Create train.txt..."
rm -rf $MY/train.txt
for i in 3 4 5 6 7 
do
find $DATA/train -name $i*.jpg | cut -d '/' -f4-5 | sed "s/$/ $i/">>$MY/train.txt
done
echo "Create test.txt..."
rm -rf $MY/test.txt
for i in 3 4 5 6 7
do
find $DATA/test -name $i*.jpg | cut -d '/' -f4-5 | sed "s/$/ $i/">>$MY/test.txt
done
echo "All done"

用上这样的脚本就可以生成自己的标签。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
你可以使用 TensorFlow 的 Dataset API 来定义一个数据读取器,可以方便地处理大规模的数据集。下面是一个示例: ```python import os import tensorflow as tf # 定义数据集路径和文件名 data_dir = '/path/to/dataset' train_file = os.path.join(data_dir, 'train.txt') val_file = os.path.join(data_dir, 'val.txt') # 定义解析函数,用于将文件名和标签解析为张量 def parse_function(filename, label): # 读取图片文件 image_string = tf.read_file(filename) # 解码JPEG格式的图片 image = tf.image.decode_jpeg(image_string, channels=3) # 将图片调整为1280x1024的大小 image = tf.image.resize_images(image, [1280, 1024]) # 将像素值归一化到[0, 1]范围内 image = tf.cast(image, tf.float32) / 255.0 # 将标签转换为整数 label = tf.string_to_number(label, out_type=tf.int32) return image, label # 使用TextLineDataset读取数据集文件 train_dataset = tf.data.TextLineDataset(train_file) val_dataset = tf.data.TextLineDataset(val_file) # 对数据集进行解析和预处理 train_dataset = train_dataset.map(lambda x: tf.string_split([x]).values) train_dataset = train_dataset.map(lambda x: (x[0], x[1])) train_dataset = train_dataset.map(parse_function) train_dataset = train_dataset.shuffle(buffer_size=10000) train_dataset = train_dataset.batch(batch_size=32) train_dataset = train_dataset.repeat(num_epochs) val_dataset = val_dataset.map(lambda x: tf.string_split([x]).values) val_dataset = val_dataset.map(lambda x: (x[0], x[1])) val_dataset = val_dataset.map(parse_function) val_dataset = val_dataset.batch(batch_size=32) val_dataset = val_dataset.repeat(num_epochs) # 创建迭代器 iterator = tf.data.Iterator.from_structure(train_dataset.output_types, train_dataset.output_shapes) train_initializer = iterator.make_initializer(train_dataset) val_initializer = iterator.make_initializer(val_dataset) # 获取输入和标签张量 images, labels = iterator.get_next() ``` 这段代码中,我们首先定义了数据集的路径和文件名。然后,定义了一个解析函数 parse_function,用于将文件名和标签解析为张量。在解析函数中,我们首先使用 tf.read_file 函数读取图片文件,然后使用 tf.image.decode_jpeg 函数将图片解码为张量。接着,使用 tf.image.resize_images 函数将图片调整为我们需要的大小。最后,使用 tf.cast 函数将像素值归一化到 [0, 1] 范围内,同时使用 tf.string_to_number 函数将标签转换为整数。 接下来,我们使用 tf.data.TextLineDataset 函数读取数据集文件,使用 map 函数对数据集进行解析和预处理。在这里,我们首先使用 tf.string_split 函数将每行数据分割为文件名和标签,然后使用我们定义的解析函数对文件名和标签进行解析。 然后,我们使用 shuffle、batch 和 repeat 函数对数据集进行批处理、随机打乱和多次重复。最后,我们使用 tf.data.Iterator.from_structure 函数创建一个迭代器,使用 make_initializer 函数将迭代器与数据集绑定,使用 get_next 函数获取输入和标签张量。 在训练和验证阶段,我们可以分别通过调用 train_initializer 和 val_initializer 函数来初始化迭代器,然后使用 TensorFlow 的 Session API 来运行模型。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值