CNN 1. 训练cifar10数据集 基于tensorflow2


此项目使用了 MiniVGG, MiniVGG with data augmentation 和 ResNet 三种CNN网络结构训练cifar10数据集,大概需要120多分钟(GTX1650, WIN10, I5-9300H),trian:20000,, valid: 20000, test:10000,在电脑上跑一跑熟悉CNN建立和不同网络比较还是比较练手的项目. VGG 网络论证了CNN 网络的深度对性能的影响。

VGG参考

结论

先说结论

  1. Accuracy: 当数据集小一点时,如10000,使用ImageDataAugmentation 差不多可以提高0.1%,当使用多一点的数据时,两者不相上下,都是在71% 左右,而ResNet为0.57,可能是构造的ResNet网络比较简单,此网络参数不到4000,远小于另外两个网络参数
  2. Time Cost: ResNet 运行时间最长,其次MiniVGG_data_aug,MiniVGG
  3. 构造稍多层的CNN网络结构,了解feature map, filter 作用,为减少运行时间,下次可以尝试使用 (9,9)的filter shape。
  4. 实现一个mini VGG 网络结构

代码 训练过程

1.Import所需的库

tensroflow2.0 GPU 版本

import csv
import tensorflow as tf
from tensorflow import keras
from keras import datasets, models, layers
import matplotlib.pyplot as plt
from keras import backend as K
import numpy as np
import os, time
from resnet import ResNet
from keras.preprocessing.image import ImageDataGenerator
os.environ['CUDA_VISIBLE_DEVICES'] = '/device:GPU:0'  # use GPU
K.clear_session()  # Some memory clean-up

2. 获取数据

def load_cifar_data():
    (X_train_full, y_train_full), (X_test, y_test) = datasets.cifar10.load_data()
    X_train_full, X_test = X_train_full / 255.0, X_test / 255.0
    print(X_train_full.shape, y_train_full.shape)
    print(X_test.shape, y_test.shape)

    # shuffle the trianing dataset
    idxs = np.arange(X_train_full.shape[0])
    np.random.shuffle(idxs)
    X_train_full = X_train_full[idxs]
    y_train_full = y_train_full[idxs]
    X_train, y_train = X_train_full[
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值