数据集介绍:CIFAR-10
CIFAR-10 是一个包含 60,000 张 32x32 像素的彩色图像的数据集,它们分为 10 个不同的类别。这个数据集广泛用于深度学习的图像分类任务
import tensorflow as tf
from tensorflow.keras.datasets import cifar10
from tensorflow.keras.utils import to_categorical
# 加载CIFAR-10数据集
(x_train, y_train), (x_test, y_test) = cifar10.load_data()
# 数据预处理
x_train = x_train.astype('float32') / 255
x_test = x_test.astype('float32') / 255
y_train = to_categorical(y_train, 10)
y_test = to_categorical(y_test, 10)
构建卷积神经网络(CNN)模型
卷积神经网络(Convolutional Neural Network,CNN)在图像分类任务中表现出色。构建一个简单的CNN模型,包括卷积层、池化层、全连接层和Dropout层,用于防止过拟合。
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Conv2D, MaxPooling2D, Flatten, Dense, Dropout
model = Sequential([
Conv2D(32, (3, 3), activation='relu', input_shape=(32, 32, 3), padding='same'),
MaxPooling2D(2, 2),
Conv2D(64, (3, 3), activation='relu', padding='same'),
MaxPooling2D(2, 2),
Flatten(),
Dense(512, activation='relu'),
Dropout(0.5),
Dense(10, activation='softmax')
])
编译和训练模型
在构建模型后,编译它并进行训练。使用categorical_crossentropy
作为损失函数,adam
作为优化器,并使用准确率作为评估指标。
# 编译模型
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
# 设置 TensorBoard 回调
tensorboard_callback = tf.keras.callbacks.TensorBoard(log_dir="logs")
# 训练模型
model.fit(x_train, y_train, epochs=10,
validation_data=(x_test, y_test),
callbacks=[tensorboard_callback])
使用TensorBoard可视化训练过程
TensorBoard,用于可视化模型性能和训练过程。在上述代码中,通过添加TensorBoard回调来启用TensorBoard。要查看TensorBoard的可视化效果,运行以下命令:
python -m tensorboard.main --logdir=./logs
在浏览器中访问TensorBoard的Web界面来监视模型的训练情况。