我恢复的Tensorflow图像分类器为所有输入输出相同的预测,除非我使用OpenCV翻转图像并同时将原始图像和镜像传递给模型 . 只传递一个或另一个导致相同的预测 . 为什么会这样?

import cv2
import numpy as np


# Import restored Tensorflow model
sess = tf.Session()
saver.restore(sess, checkpoint_file_path)
graph = tf.get_default_graph()
make_logits = graph.get_operation_by_name("logits")
logits = make_logits.outputs[0]

image = np.random.rand(240, 320, 3)
flipped = cv2.flip(random_image, 1)

print(logits.eval(feed_dict={x: [image]}, session=sess))
# result: [[-0.0784276   0.40849224  0.01139636]]

print(logits.eval(feed_dict={x: [image,flipped]}, session=sess))
# result: [[ 2.49520946  2.34099054 -3.41013908]
#          [-2.6520648  -1.52400601  3.43293166]]

print(logits.eval(feed_dict={x: [flipped]}, session=sess))
# result: [[-0.0784276   0.40849224  0.01139636]]

该模型具有很高的准确性,并且我有一个 balancer 的数据集,所以它并不是每次都只是预测大多数类 . 训练和测试误差都会随着时间的推移而减少,所以我认为拟合过程是可以的 . 为了它的 Value ,我通过翻转图像(以及它们的标签)来增加我的训练数据集,但我不明白为什么这会产生影响 .

丑陋的黑客/解决方法是始终提供图像 - 镜像对,然后只获取原始结果并丢弃镜像的结果 . 当我这样做时,模型具有高精度,但解决方案感觉很荒谬 .