gpt4 book ai didi

python - 如何在不使 Keras 中的所有数据 float32 的情况下进行训练/测试?

转载 作者:行者123 更新时间:2023-12-03 19:07:12 24 4
gpt4 key购买 nike

我正在尝试进行图像识别,所以我查看了 the CIFAR10 Keras 的例子。

在将模型拟合到数据之前,数据( X_train/X_test )需要归一化为 0-1 并转换为 float32 .当我使用像 CIFAR10 这样的小数据时,这没问题。但是当数据大小增加时,将数据转换为float32会消耗大量内存。 .我不想将所有数据转换为 float32 .

这可以为 keras 中的每个小批量工作(将数据转换为 float32 并标准化)吗?

最佳答案

您可以进行一次转换,并将标准化、转换后的数据存储到您加载用于训练的文件中,这样您就无需每次都进行转换。

例如(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)

关于python - 如何在不使 Keras 中的所有数据 float32 的情况下进行训练/测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38066307/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com