Tensorflow - 使用批处理形成验证集

Posted

技术标签:

【中文标题】Tensorflow - 使用批处理形成验证集【英文标题】:Tensorflow - Using batching to form a validation set 【发布时间】:2017-01-15 03:22:16 【问题描述】:

我正在尝试使用 tensorflow 的批处理系统(详见此处https://www.tensorflow.org/versions/master/how_tos/reading_data/index.html),使用我之前训练过的模型进行预测。目前我已将我在 tf.train.batch 中使用的批量大小设置为等于我想要进行预测的数据集的大小。

但是,我想创建一个验证集来测试我的预测并避免过度拟合。

有没有办法使用批处理系统将验证集与训练数据分开,或者是使用占位符的唯一方法?

以下是我负责训练的代码示例。它:

从 CSV 文件中读取数据,将数据转换为张量

将张量传递给 tf.train.shuffle_batch 进行训练

def input_pipeline(filename_list, batch_size, capacity): filename_queue = tf.train.string_input_producer(filename_list,num_epochs=None) 阅读器 = tf.TextLineReader() 键、值 = reader.read(filename_queue)

# Defaults force key value and label to int, all others to float.
record_defaults = [[1]]+[[46]]+[[1.0] for i in range(436)]
# Reads in a single row from the CSV and outputs a list of scalars.
csv_list = tf.decode_csv(value, record_defaults=record_defaults)
# Packs the different columns into separate feature tensors.
location = tf.pack(csv_list[2:4])
bbox = tf.pack(csv_list[5:8])
pix_feats = tf.pack(csv_list[9:])
onehot = tf.one_hot(csv_list[1], depth=98)
keep_prob = 0.5


# Creates batches of images and labels.
image_batch, label_batch = tf.train.shuffle_batch(
    [pix_feats, onehot], 
    batch_size=batch_size, num_threads=4, capacity=capacity, min_after_dequeue=30000)

return image_batch, label_batch

【问题讨论】:

【参考方案1】:

我不确定你的记录默认值。

所以有几种方法可以做到这一点。你可以有两个不同的“shuffle_batch”,一个接收训练数据,另一个接收验证数据。然后你调用运行其中一个。

train_loss = train(train_set)
val_loss = val(val_set)

sess.run([train_loss]) # or sess.run([val_loss])

占位符是一种替代方法。

【讨论】:

问题是我的训练数据和我的验证数据在同一个文件中(它是一个大的 csv 文件)。有没有办法,只使用批处理,我可以从文件中获得随机抽样的验证集?对不起,如果这是微不足道的,你可以说,我是新手。

以上是关于Tensorflow - 使用批处理形成验证集的主要内容,如果未能解决你的问题,请参考以下文章

TensorFlow基本使用

TensorFlow基本使用

Tensorflow2.0语法 - dataset数据封装+训测验切割

Python之TensorFlow的(案例)验证码识别-6

如何将 Tensorflow 数据集 API 与训练和验证集一起使用

如何使用tensorflow为每个类获取具有相同数量图像的验证集?