1

我想将迁移学习与 Google 的 Inception 网络一起用于图像识别问题。我正在使用 TensorFlow 示例源中的 retrain.py 来获取灵感,并按照Google 的官方教程进行操作。

然而,它的输入管道是“每一步从训练集中随机选择 10 张图像(其中 10 张是 batch_size),从缓存中找到它们的瓶颈,并将它们输入最后一层以获得预测。”

具体来说,在其代码retrain.py 中,将通过随机选择每个图像来检索 batch_size 图像。对于每个图像,找到其图像索引

image_index = random.randrange(MAX_NUM_IMAGES_PER_CLASS + 1)

其中MAX_NUM_IMAGES_PER_CLASS= 2^27 + 1,然后image_index将由标签的可用图像数量取模。

我的问题是:

1)为什么它必须创建这样的批次(随机到大量,然后修改每个类的长度)?为什么我们不随机到每个班级的长度)

2)如果我们为每次喂食选择一组随机的图像,我们是否会丢失大部分数据并接收到重复的喂食示例?为什么输入管道是正常排列的:我们有很多 epoch,每个 epoch 都是完整的数据并分为很多批次,然后我们将每个批次输入到我们的模型中?

非常感谢!!

参考

在 retrain.py 中train_bottleneckstrain_ground_truth(这些被输入到模型中)由get_random_distorted_bottlenecks. 在这个函数中,我们对每个图像进行循环,直到我们有足够的 batch_size 图像:找到一个随机标签,然后找到随机索引:

label_index = random.randrange(class_count)
label_name = list(image_lists.keys())[label_index]
image_index = random.randrange(MAX_NUM_IMAGES_PER_CLASS + 1)
4

0 回答 0