【问题标题】:How did Tensorflow process images of ImageNet in Tfrecord format when training resnet?TensorFlow 在训练 resnet 时如何处理 Tfrecord 格式的 ImageNet 图像?
【发布时间】:2020-10-01 12:18:00
【问题描述】:

emm,将imagenet转成Tfrecord格式比较复杂,所以我从某处下载了处理后的Tfrecord imagenet。

我用Pytorch的参数将它应用到tensorflow中的resnet34,但发现准确率只有55%,太低了。我想原因可能是 Pytorch.models 和这个 Tfrecord 之间处理 imagenet 的方法不同。还有一位好兄弟告诉了我 Pytorch 是如何处理数据的,但我仍然需要知道 tensorflow 是如何处理数据的。

我发现Tfrecord图片的取值范围是-1到1,能否告诉我这个Tfrecord的处理方法,以便我可以尝试提高准确性?

非常感谢!我太新了_flesh,你的好意太重要了

【问题讨论】:

    标签: tensorflow pytorch resnet tfrecord imagenet


    【解决方案1】:

    好的,让我把我在 stackoverflow 中的第一个分析器发给我自己。

    处理图像的不同方式会影响准确性,没错。

    Pytorch 将图片缩放到 [0,1],然后使用均值和标准对它们进行归一化。

    我找到的 Tfrecord 文件将图片缩放到 [0,1],然后通过以下方式将它们缩放到 [-1, 1]:

    image = tf.subtract(image, 0.5)
    image = tf.multiply(image, 2.0)
    

    (在我看来这是一种奇怪的方式)。

    所以我在这两行中添加了 cmets,得到了 66% 的准确率。通过fine_tune,得到了72%(但我仍然不明白从Pytorch传输参数到Tensoflow时准确率下降)。

    PS:这段时间我发现在tensorflow中保存模型时,operator中设置的参数会被保存,所以不用担心operator的参数如何设置相同。

    【讨论】:

      猜你喜欢
      • 2020-10-01
      • 1970-01-01
      • 2018-10-16
      • 1970-01-01
      • 2018-08-27
      • 1970-01-01
      • 1970-01-01
      • 2017-04-06
      • 1970-01-01
      相关资源
      最近更新 更多