将 tf.image.adjust_contrast 应用于标准化数据是否不正确?

问题描述

我有两个具有相同数字的数组 {A,B​​strong>}。然后我执行以下操作:

  1. 我将 B 归一化在 [-1,1] 范围内
  2. 我将tf.image.adjust_contrast应用于AB(具有相同的contrast_factor)
  3. 我在 [0,255] 范围内重新缩放 B
  4. 比较两者,但相差一些小数

要重现的代码使用 Python 3.7.2,tensorflow==2.4):

import numpy as np
import tensorflow as tf

A = (np.random.randint(0,256,(2,2,3)))
# Scale between -1 and 1
B = (A / 177.5) - 1
# Change contrast w/same factor to A and B
A = tf.image.adjust_contrast(A,0.4).numpy()
B = tf.image.adjust_contrast(B,0.4).numpy()
# Re-scale A back to [0,255]
B = 177.5 * B + 177.5

示例输出

A

array([[[ 98,174,96],[ 88,159,79]],[[178,91,89],[150,170,67]]])

B

array([[[ 98.19999442,174.60000135,96.89999849],[ 88.59999925,159.80000131,79.69999701]],[[178.60000551,90.9999954,89.69999418],[150.60000286,170.60000116,67.70000041]]])

比较

np.testing.assert_almost_equal(A,B)

# Error
# ... Arrays are not almost equal to 7 decimals ...

我的问题是:由于这种数据增强技术仅在训练期间应用,在测试时(即:而不是 98.19999442 将是 98) A 和 B 之间的这个小增量在进行推理时会不会产生很小的错误,或者这只是一个不会影响性能的转换错误

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...