У меня есть массив изображений, которые я хочу передать TensorFlow. Я хочу сосредоточить изображения вокруг среднего и стандартизировать стандартное отклонение. Я последовал за this answer, но, похоже, я не могу получить нулевое значение. Я изучаю numpy, поэтому, возможно, мне не хватает чего-то простого.Центрирование массива изображений в python
Мой текущий код:
import numpy as np
# Load pickled data
import pickle
# TODO: Fill this in based on where you saved the training and testing data
training_file = 'train.p'
with open(training_file, mode='rb') as f:
train = pickle.load(f)
X_train, y_train = train['features'], train['labels']
# Let us inspect whether the data is centered.
for ch in range(3):
print("for channel %s mean or clahe data: %s" %(
ch, X_train[:,ch].mean()))
X_norm = np.copy(X_train)
for ch in range(3):
X_norm[:, ch] = (X_norm[:, ch] - X_norm[:,ch].mean())/ X_norm[:, ch].std()
# Let us inspect our new mean.
for ch in range(3):
print("for channel %s new mean for CLAHE data: %s new std: %s" % (
ch, X_norm[:,ch].mean(), X_norm[:,ch].std()))
ОТМЕЧЕННЫХ набор данных может быть получена из here
С выходом:
for channel 0 mean or clahe data: 88.9090870931
for channel 1 mean or clahe data: 88.2472258708
for channel 2 mean or clahe data: 87.5765175619
for channel 0 new mean for CLAHE data: 8.77830238806 new std: 45.7207148838
for channel 1 new mean for CLAHE data: 8.79695563094 new std: 45.7780456089
for channel 2 new mean for CLAHE data: 8.71418658131 new std: 45.5661789057
Мой желаемый результат будет иметь для каждого канала в среднем около ноль и стандартное отклонение 1.