Tensorflow:多规模培训

问题描述 投票:-1回答:1

我正在尝试在Tensorflow中培训一种类似YOLOv2的多尺度CNN:每隔几个时期随机调整一批输入。但我对Tensorflow不太熟悉,以下是我如何获得批量图像和标签:

data_provider = slim.dataset_data_provider.DatasetDataProvider(dataset)
image, label = data_provider.get(['image', 'label'])
inputs, labels = tf.train.shuffle_batch([image, label], \
                                    batch_size=128, \
                                    num_threads=4,  \
                                    capacity= 1000, \
                                    min_after_dequeue=616)

然后我希望我可以调整一批输入并将其输入网络

rand_size=int(np.random.uniform(0.15,1)*720)
resize_output = tf.image.resize_bilinear(preprocessed_inputs, [rand_size,rand_size],align_corners=True)

不幸的是,它不起作用,它只在开始时调整批量大小,并将调整大小操作应用于所有输入

任何人都有我应该做的建议?非常感谢

python tensorflow machine-learning yolo
1个回答
0
投票

你希望rand_size基于tf.random_uniform而不是numpy / int,否则它将对你的session的每次运行具有相同的值。

rand_size = tf.random_uniform(
    minval=int(0.15*720), maxval=720, dtype=tf.int32, shape=())

这仍将以相同的数量调整批次的每个元素的大小。

我不熟悉slim如何进行预处理,但是在那里有一些东西允许你在批处理之前完成上述操作(在这种情况下,你每次都会获得不同的随机值)。或者看看使用最近发布的tf.data.DatasetThis post可能会帮助你。

© www.soinside.com 2019 - 2024. All rights reserved.