初始代码:
def color_normalize(train_images, test_images):
mean = [np.mean(train_images[:, :, :, i]) for i in range(3)] # [125.307, 122.95, 113.865]
std = [np.std(train_images[:, :, :, i]) for i in range(3)] # [62.9932, 62.0887, 66.7048]
for i in range(3):
train_images[:, :, :, i] = (train_images[:, :, :, i] - mean[i]) / std[i]
test_images[:, :, :, i] = (test_images[:, :, :, i] - mean[i]) / std[i]
return train_images, test_image
def main():
(x_train, y_train), (x_test, y_test) = tf.keras.datasets.cifar10.load_data()
# x代表数据,y代表标签,train代表是用于训练的,test是用于测试的
x_train, x_test = color_normalize(x_train, x_test) # 归一化
labeled_data, labels = CIFAR_DataLabel(x_train, y_train) # 对训练集进行预处理
此时,x_train, x_test只有三种数据0,1,255,明显没有达到归一化的要求,调试后发现,x_train, x_test的数据类型是uint8,直觉觉得应该改成float类型的,改成下面代码后,归一化正常
def color_normalize(train_images, test_images):
mean = [np.mean(train_images[:, :, :, i]) for i in range(3)] # [125.307, 122.95, 113.865]
std = [np.std(train_images[:, :, :, i]) for i in range(3)] # [62.9932, 62.0887, 66.7048]
for i in range(3):
train_images[:, :, :, i] = (train_images[:, :, :, i] - mean[i]) / std[i]
test_images[:, :, :, i] = (test_images[:, :, :, i] - mean[i]) / std[i]
return train_images, test_image
def main():
(x_train, y_train), (x_test, y_test) = tf.keras.datasets.cifar10.load_data()
# x代表数据,y代表标签,train代表是用于训练的,test是用于测试的
x_train = np.array(x_train, dtype=np.float64)
x_test = np.array(x_test, dtype=np.float64)
x_train, x_test = color_normalize(x_train, x_test) # 归一化
labeled_data, labels = CIFAR_DataLabel(x_train, y_train) # 对训练集进行预处理