我正在尝试在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)
不幸的是,它不起作用,它仅在开始时调整了批处理的大小,并将调整大小操作应用于所有输入
有人对我应该做什么建议吗? 非常感谢
答案 0 :(得分: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.Dataset
。 This post可能会帮助您。