您可以进行一次转换,并将标准化、转换后的数据存储到您加载用于训练的文件中,这样您就不需要每次都进行转换。
例如(normalize.py/python 3):
from keras.datasets import cifar10
import pickle
(X_train, y_train), (X_test, y_test) = cifar10.load_data()
X_train = X_train.astype('float32')
X_test = X_test.astype('float32')
X_train /= 255
X_test /= 255
with open('cifar10_normalized.pkl', 'wb') as f:
pickle.dump(((X_train, y_train), (X_test, y_test)), f)
在你的代码中(例如train.py)你可以这样做
import pickle
with open('cifar10_normalized.pkl', 'rb') as f:
(X_train, y_train), (X_test, y_test) = pickle.load(f)
另一种可能性是对每个批次进行标准化和转换。使用model.train_on_batch 运行单个批处理。例如:
for (x_train,y_train) in yourData:
x_train = x_train.astype(np.float32) / 255
model.train_on_batch(x_train, y_train)
最后你也可以use a python generator for training:
def g():
for (x_train,y_train) in yourData:
x_train = x_train.astype(np.float32) / 255
yield (x_train, y_train)
model.fit_generator(g)