simpleCNN 训练 cifar-10 数据集
来源:互联网 发布:数据库第三版课后答案 编辑:程序博客网 时间:2024/06/05 06:42
利用三个卷积层和三个全连接层,对cifar-10数据集进行训练。第一二个卷积层为32个5X5的卷积核,第三个卷积层为64个5X5的卷积核,卷积层初始参数为方差0.01正态随机数,激活函数为Relu。每个卷积层后都跟随一个池化层,第一个池化层为MaxPooling,第二三个池化层为AveragePooling。
需注意的是,训练数据需经过去均值和标准化,这点很重要。实现代码如下:
import osimport cv2import numpyfrom keras.models import Sequentialfrom keras.layers import Densefrom keras.layers import Conv2D, MaxPooling2D, Flatten, AveragePooling2Dfrom keras.layers import initializersfrom keras.optimizers import SGDfrom keras.utils import np_utilsfrom keras.utils.vis_utils import plot_modeldef loadData(path): data = [] labels = [] for i in range(10): dir1 = './'+path+'/'+str(i) listImg = os.listdir(dir1) for img in listImg: imgIn = cv2.imread(dir1+'/'+img) if imgIn.size != 3072: print 'Img error' data.append(imgIn)# data.append([numpy.array(Image.open(dir+'/'+img))]) labels.append(i) print path, i, 'is read' return data, labelstrainData, trainLabels = loadData('train')#testData, testLabels = loadData('test1')trainLabels = np_utils.to_categorical(trainLabels, 10)#testLabels = np_utils.to_categorical(testLabels, 10)trainData = numpy.reshape(trainData, (len(trainData), 32, 32,3))trainData = trainData.astype(numpy.float32)trainData -= numpy.mean(trainData, axis=0)trainData /= numpy.std(trainData, axis=0)model = Sequential()model.add(Conv2D(filters=32, kernel_size=(5,5), padding='same', input_shape=(32,32,3), data_format='channels_last', activation='relu', kernel_initializer=initializers.random_normal(stddev=0.0001)))model.add(MaxPooling2D(pool_size=(2,2)))model.add(Conv2D(filters=32, kernel_size=(5,5), padding='same', data_format='channels_last', activation='relu', kernel_initializer=initializers.random_normal(stddev=0.01)))model.add(AveragePooling2D(pool_size=(2,2)))model.add(Conv2D(filters=64, kernel_size=(5,5), padding='same', data_format='channels_last', activation='relu', kernel_initializer=initializers.random_normal(stddev=0.01)))model.add(AveragePooling2D(pool_size=(2,2)))model.add(Flatten())model.add(Dense(1024, activation='relu', kernel_initializer=initializers.random_normal(stddev=0.1)))model.add(Dense(256, activation='relu', kernel_initializer=initializers.random_normal(stddev=0.1)))model.add(Dense(10, activation='softmax', kernel_initializer=initializers.random_normal(stddev=0.1)))sgd = SGD(lr=0.001, decay=1e-6, momentum=0.9, nesterov=True)model.compile(optimizer=sgd, loss='categorical_crossentropy', metrics=['accuracy'])result = model.fit(trainData, trainLabels, batch_size=250, epochs=50, verbose=1, shuffle=True)plot_model(model, to_file='model.png', show_shapes=True, show_layer_names=False)
训练50轮,20轮时精度为0.7,50轮时训练精度为0.8345。
0 0
- simpleCNN 训练 cifar-10 数据集
- Ubuntu+caffe训练cifar-10数据集
- caffe学习(二) CIFAR-10数据集上训练
- Cifar-10数据集的训练与测试
- CIFAR-10训练模型
- TensorFlow CIFAR-10数据集
- caffe示例实现之1在CIFAR-10数据集上训练与测试Caffe
- Windows Caffe 学习笔记(一)训练和测试CIFAR-10数据集
- TensorFlow学习--卷积神经网络训练CIFAR-10数据集
- BWN-XNOR-caffe-master训练二进制cifar数据集
- CIFAR-10和CIFAR-100数据集读取显示
- CNN训练Cifar-10技巧
- CNN训练Cifar-10技巧
- CNN训练Cifar-10技巧
- CIFAR-10 训练与测试
- CNN训练Cifar-10技巧
- TensorFlow CNN 测试CIFAR-10数据集
- The CIFAR-10 dataset 数据集
- 从一个简单的聊天程序SimpleChat看VPN技术
- 内网安全——利用NSA Smbtouch批量检测内网
- 【leedcode】121. Best Time to Buy and Sell Stock
- Java实现3DES对称加密
- Golang适合高并发场景的原因分析
- simpleCNN 训练 cifar-10 数据集
- 企业海量数据搜索服务器架构图
- 忆同窗
- PCIe设备发现过程
- 用C++玩转矩阵
- Bootstrap打造特色进度条
- 第11章 未雨绸缪
- 红包论
- 字典查找