如何标准化张量
How to standardize a tensor
当我有图像时,我可以按如下方式对图像进行标准化:
image[:, :, 0] = ((image[:, :, 0]-mean_1))/std_1
image[:, :, 1] = ((image[:, :, 1]-mean_2))/std_2
image[:, :, 2] = ((image[:, :, 2]-mean_3))/std_3
其中mean_1和std_1是第一个通道的均值和标准差。 mean_2、std_2、mean_3 和 std_3 相同。但现在图像是一个张量并具有以下信息:
(460, 700, 3) <dtype: 'float32'>
<class 'tensorflow.python.framework.ops.Tensor'>
我是 tensorflow 的新手,我不知道如何将上述公式转换为对张量执行相同任务的代码 image
?
编辑:均值和标准差是我对所有数据集图像计算的。所以我有他们的价值观。
更新 1:我尝试使用 tf.keras.layers.Normalization 阻碍我的模型来解决这个问题:
inputs = keras.Input(shape=(460,700,3))
norm_layer = Normalization(mean=[200.827,160.252,195.008],
variance=[np.square(33.154),
np.square(45.877),
np.square(29.523)])
inputs=norm_layer(inputs)
这提出了两个新问题:
tf.keras.layers.Normalization 和上面的代码是否按我的需要规范化了每个通道的输入?
使用上面的代码,tf.keras.layers.Normalization 是否仅适用于测试和验证数据或训练数据?我需要它来处理所有数据集。
请大家帮帮我:(我很困惑。
更新 1:修复以展示如何与预处理层一起使用
import tensorflow as tf
import numpy as np
# Create random img
img = tf.Variable(np.random.randint(0, 255, (10, 224, 224 ,3)), dtype=tf.uint8)
# Create prerprocessing layer
# Note: Works with tensorflow 2.6 and up
norm_layer = tf.keras.layers.Normalization(mean=[0.485, 0.456, 0.406], variance=[np.square(33.154), np.square(45.877), np.square(29.523)])
# Apply norm_layer to your image
# You need not add it to your model
norm_img = norm_layer(img)
# or
# Use via numpy but the output is a tensor since your running a preprocesisng layer
# norm_img = norm_layer(img.numpy())
# Run model prediction
predictions = model.predict(norm_img)
当我有图像时,我可以按如下方式对图像进行标准化:
image[:, :, 0] = ((image[:, :, 0]-mean_1))/std_1
image[:, :, 1] = ((image[:, :, 1]-mean_2))/std_2
image[:, :, 2] = ((image[:, :, 2]-mean_3))/std_3
其中mean_1和std_1是第一个通道的均值和标准差。 mean_2、std_2、mean_3 和 std_3 相同。但现在图像是一个张量并具有以下信息:
(460, 700, 3) <dtype: 'float32'>
<class 'tensorflow.python.framework.ops.Tensor'>
我是 tensorflow 的新手,我不知道如何将上述公式转换为对张量执行相同任务的代码 image
?
编辑:均值和标准差是我对所有数据集图像计算的。所以我有他们的价值观。
更新 1:我尝试使用 tf.keras.layers.Normalization 阻碍我的模型来解决这个问题:
inputs = keras.Input(shape=(460,700,3))
norm_layer = Normalization(mean=[200.827,160.252,195.008],
variance=[np.square(33.154),
np.square(45.877),
np.square(29.523)])
inputs=norm_layer(inputs)
这提出了两个新问题:
tf.keras.layers.Normalization 和上面的代码是否按我的需要规范化了每个通道的输入?
使用上面的代码,tf.keras.layers.Normalization 是否仅适用于测试和验证数据或训练数据?我需要它来处理所有数据集。
请大家帮帮我:(我很困惑。
更新 1:修复以展示如何与预处理层一起使用
import tensorflow as tf
import numpy as np
# Create random img
img = tf.Variable(np.random.randint(0, 255, (10, 224, 224 ,3)), dtype=tf.uint8)
# Create prerprocessing layer
# Note: Works with tensorflow 2.6 and up
norm_layer = tf.keras.layers.Normalization(mean=[0.485, 0.456, 0.406], variance=[np.square(33.154), np.square(45.877), np.square(29.523)])
# Apply norm_layer to your image
# You need not add it to your model
norm_img = norm_layer(img)
# or
# Use via numpy but the output is a tensor since your running a preprocesisng layer
# norm_img = norm_layer(img.numpy())
# Run model prediction
predictions = model.predict(norm_img)