CIFAR-10模型训练与可视化

通过caffe深度学习框架在cifar10数据集训练得到模型,观察并分析模型的train loss 、test loss及accuracy曲线,并对得到的caffemodel进行测试。

数据集介绍:cifar-10是一个使用非常广泛的物体识别图像数据集,CIFAR-10数据中包含了60000张32×32的彩色图像,其中训练集50000张,测试集10000张。共有10类物体,分别是airplane,automobile,bird,cat,deer,dog,frog,horse,ship,truck。


图1 CIFAR-10数据部分示例图片
实验环境:Ubuntu14.04+caffe+gtx960+cuda7.5

网络模型
(1)下载数据集

首先需要从CIFAR-10网站上下载数据集并将图片转为lmdb格式以及计算二进制格式均值,caffe框架中的

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个简单的示例代码,用于使用TensorFlow的AlexNet模型CIFAR-10数据集进行分类,并对结果进行可视化。 ``` import tensorflow as tf import numpy as np import matplotlib.pyplot as plt # 加载CIFAR-10数据集 (x_train, y_train), (x_test, y_test) = tf.keras.datasets.cifar10.load_data() # 对数据进行归一化 x_train = x_train.astype('float32') / 255 x_test = x_test.astype('float32') / 255 # 定义类别数量 num_classes = 10 # 将标签进行one-hot编码 y_train = tf.keras.utils.to_categorical(y_train, num_classes) y_test = tf.keras.utils.to_categorical(y_test, num_classes) # 定义AlexNet模型 model = tf.keras.models.Sequential([ tf.keras.layers.Conv2D(filters=96, kernel_size=(11,11), strides=(4,4), activation='relu', input_shape=(32,32,3)), tf.keras.layers.BatchNormalization(), tf.keras.layers.MaxPooling2D(pool_size=(3,3), strides=(2,2)), tf.keras.layers.Conv2D(filters=256, kernel_size=(5,5), strides=(1,1), activation='relu', padding="same"), tf.keras.layers.BatchNormalization(), tf.keras.layers.MaxPooling2D(pool_size=(3,3), strides=(2,2)), tf.keras.layers.Conv2D(filters=384, kernel_size=(3,3), strides=(1,1), activation='relu', padding="same"), tf.keras.layers.BatchNormalization(), tf.keras.layers.Conv2D(filters=384, kernel_size=(3,3), strides=(1,1), activation='relu', padding="same"), tf.keras.layers.BatchNormalization(), tf.keras.layers.Conv2D(filters=256, kernel_size=(3,3), strides=(1,1), activation='relu', padding="same"), tf.keras.layers.BatchNormalization(), tf.keras.layers.MaxPooling2D(pool_size=(3,3), strides=(2,2)), tf.keras.layers.Flatten(), tf.keras.layers.Dense(4096, activation='relu'), tf.keras.layers.Dropout(0.5), tf.keras.layers.Dense(4096, activation='relu'), tf.keras.layers.Dropout(0.5), tf.keras.layers.Dense(num_classes, activation='softmax') ]) # 编译模型 model.compile(optimizer=tf.keras.optimizers.SGD(lr=0.01, decay=1e-6, momentum=0.9, nesterov=True), loss='categorical_crossentropy', metrics=['accuracy']) # 训练模型 history = model.fit(x_train, y_train, batch_size=128, epochs=10, validation_data=(x_test, y_test)) # 可视化训练过程中的损失和准确率 plt.plot(history.history['loss'], label='train_loss') plt.plot(history.history['val_loss'], label='val_loss') plt.plot(history.history['accuracy'], label='train_acc') plt.plot(history.history['val_accuracy'], label='val_acc') plt.legend() plt.show() # 对测试集进行预测 y_pred = model.predict(x_test) # 将预测结果转换为类别标签 y_pred = np.argmax(y_pred, axis=1) y_test = np.argmax(y_test, axis=1) # 计算准确率 accuracy = np.mean(y_pred == y_test) print("Accuracy:", accuracy) # 随机选择一些样本进行可视化 indices = np.random.choice(range(len(x_test)), 10) images = x_test[indices] labels = y_test[indices] predictions = y_pred[indices] # 可视化结果 fig, axes = plt.subplots(nrows=2, ncols=5, figsize=(10,5)) axes = axes.ravel() for i in np.arange(0, 10): axes[i].imshow(images[i]) axes[i].set_title("True: %s \nPredict: %s" % (labels[i], predictions[i])) axes[i].axis('off') plt.subplots_adjust(wspace=1)

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值