【问题标题】: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的参数如何设置相同。