cifar10分成小批量逐一训练 代码
时间: 2023-09-26 13:14:17 浏览: 33
下面是使用TensorFlow 2.x训练CIFAR-10数据集的代码:
```
import tensorflow as tf
from tensorflow.keras.datasets import cifar10
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Conv2D, MaxPooling2D, Dropout, Flatten, Dense
# 加载数据集
(x_train, y_train), (x_test, y_test) = cifar10.load_data()
# 数据预处理
x_train = x_train / 255.0
x_test = x_test / 255.0
# 构建模型
model = Sequential()
model.add(Conv2D(32, (3, 3), activation='relu', input_shape=(32, 32, 3)))
model.add(MaxPooling2D((2, 2)))
model.add(Conv2D(64, (3, 3), activation='relu'))
model.add(MaxPooling2D((2, 2)))
model.add(Conv2D(64, (3, 3), activation='relu'))
model.add(Flatten())
model.add(Dense(64, activation='relu'))
model.add(Dense(10, activation='softmax'))
# 编译模型
model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])
# 训练模型
batch_size = 64
epochs = 10
steps_per_epoch = len(x_train) // batch_size
history = model.fit(tf.data.Dataset.from_tensor_slices((x_train, y_train)).batch(batch_size), epochs=epochs, steps_per_epoch=steps_per_epoch)
# 评估模型
test_loss, test_acc = model.evaluate(x_test, y_test, verbose=2)
print('Test accuracy:', test_acc)
```
在训练过程中,我们使用`tf.data.Dataset.from_tensor_slices((x_train, y_train)).batch(batch_size)`来将数据集分成小批量。其中`batch_size`表示每个小批量的大小,`steps_per_epoch`表示每个epoch中小批量的个数。
注意,由于CIFAR-10数据集较小,上面的代码可以在CPU上运行。如果使用更大的数据集或更复杂的模型,建议使用GPU进行训练以加快训练速度。