【问题标题】:Tensorflow: multi-scale trainingTensorflow:多尺度训练
【发布时间】:2018-09-04 08:05:43
【问题描述】:

我正在尝试在 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)

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

有人对我应该做什么有建议吗? 非常感谢

【问题讨论】:

    标签: python tensorflow machine-learning yolo


    【解决方案1】:

    您希望 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 可能会帮助你。

    【讨论】:

      猜你喜欢
      • 2018-10-04
      • 2017-09-10
      • 2023-03-15
      • 1970-01-01
      • 1970-01-01
      • 2016-03-09
      • 1970-01-01
      • 1970-01-01
      • 2020-08-05
      相关资源
      最近更新 更多