千家信息网

python中Keras如何构建CNN网络

发表于:2025-11-08 作者:千家信息网编辑
千家信息网最后更新 2025年11月08日,这篇文章主要介绍了python中Keras如何构建CNN网络的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇python中Keras如何构建CNN网络文章都会有所收获,下面
千家信息网最后更新 2025年11月08日python中Keras如何构建CNN网络

这篇文章主要介绍了python中Keras如何构建CNN网络的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇python中Keras如何构建CNN网络文章都会有所收获,下面我们一起来看看吧。

Keras中构建CNN的重要函数

1、Conv2D

Conv2D用于在CNN中构建卷积层,在使用它之前需要在库函数处import它。

from keras.layers import Conv2D

在实际使用时,需要用到几个参数。

Conv2D(    nb_filter = 32,    nb_row = 5,    nb_col = 5,    border_mode = 'same',    input_shape = (28,28,1))

其中,nb_filter代表卷积层的输出有多少个channel,卷积之后图像会越来越厚,这就是卷积后图像的厚度。nb_row和nb_col的组合就是卷积器的大小,这里卷积器是(5,5)的大小。border_mode代表着padding的方式,same表示卷积前后图像的shape不变。input_shape代表输入的shape。

2、MaxPooling2D

MaxPooling2D指的是池化层,在使用它之前需要在库函数处import它。

from keras.layers import MaxPooling2D

在实际使用时,需要用到几个参数。

MaxPooling2D(    pool_size = (2,2),    strides = (2,2),    border_mode = 'same')

其中,pool_size表示池化器的大小,在这里,池化器的shape是(2,2)。strides是池化器的步长,这里在X和Y方向上都是2,池化后,输出比输入的shape小了1/2。border_mode代表着padding的方式。

3、Flatten

Flatten用于将卷积池化后最后的输出变为一维向量,这样才可以和全连接层连接,用于计算。在使用前需要用import导入。

from keras.layers import Flatten

在实际使用时,在最后一个池化层后直接添加层即可

model.add(Flatten())

全部代码

这是一个卷积神经网络的例子,用于识别手写体,其神经网络结构如下:

卷积层1->池化层1->卷积层2->池化层2->flatten->全连接层1->全连接层2->全连接层3。

单个样本的shape如下:

(28,28,1)->(28,28,32)->(14,14,32)->(14,14,64)->(7,7,64)->(3136)->(1024)->(256)

import numpy as npfrom keras.models import Sequentialfrom keras.layers import Dense,Activation,Conv2D,MaxPooling2D,Flatten ## 全连接层from keras.datasets import mnistfrom keras.utils import np_utilsfrom keras.optimizers import Adam(X_train,Y_train),(X_test,Y_test) = mnist.load_data() X_train = X_train.reshape(-1,28,28,1)X_test = X_test.reshape(-1,28,28,1)Y_train = np_utils.to_categorical(Y_train,num_classes= 10)Y_test = np_utils.to_categorical(Y_test,num_classes= 10)model = Sequential()# conv1model.add(    Conv2D(        nb_filter = 32,        nb_row = 5,        nb_col = 5,        border_mode = 'same',        input_shape = (28,28,1)    ))model.add(Activation("relu"))# pool1model.add(    MaxPooling2D(        pool_size = (2,2),        strides = (2,2),        border_mode = 'same'    ))# conv2model.add(    Conv2D(        nb_filter = 64,        nb_row = 5,        nb_col = 5,        border_mode = 'same'    ))model.add(Activation("relu"))# pool2model.add(    MaxPooling2D(        pool_size = (2,2),        strides = (2,2),        border_mode = 'same'    ))# 全连接层model.add(Flatten())model.add(Dense(1024))model.add(Activation("relu"))model.add(Dense(256))model.add(Activation("relu"))model.add(Dense(10))model.add(Activation("softmax"))adam = Adam(lr = 1e-4)## compilemodel.compile(loss = 'categorical_crossentropy',optimizer = adam,metrics = ['accuracy'])## tarinprint("\ntraining")cost = model.fit(X_train,Y_train,nb_epoch = 2,batch_size = 32)print("\nTest")## acccost,accuracy = model.evaluate(X_test,Y_test)## W,b = model.layers[0].get_weights()print("accuracy:",accuracy)

实验结果为:

Epoch 1/260000/60000 [==============================] - 64s 1ms/step - loss: 0.7664 - acc: 0.9224Epoch 2/260000/60000 [==============================] - 62s 1ms/step - loss: 0.0473 - acc: 0.9858Test10000/10000 [==============================] - 2s 169us/stepaccuracy: 0.9856

关于"python中Keras如何构建CNN网络"这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对"python中Keras如何构建CNN网络"知识都有一定的了解,大家如果还想学习更多知识,欢迎关注行业资讯频道。

卷积 网络 全连 代表 函数 图像 大小 实际 知识 输出 内容 参数 就是 方式 神经 神经网络 篇文章 输入 重要 代码 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 网络技术对会计发展影响 大专学历可以学软件开发吗 梦幻西游5开刷金数据库 中化创新科技城互联网总部大厦 东塔网络安全学院属于国家 数据库强关联 数据库物理文件名怎么改 方舟手游如何快速升级服务器 idc机房服务器维护 服务器安全防护94ip 打水软件开发 mc千人服务器 南京地区软件开发公司电话 数据库怎么设置窗体自动弹出 浙大智能通信网络安全专业 默纳克怎样用服务器查故障 湖南工程学院网络安全中心 计算机网络技术微调查 服务器的数据安全及备份 简笔画网络安全手抄报可爱 网络技术求职信格式 网络安全小学班会名称 构建网络安全机制的途径是 关于检查网络安全的app 学网络安全毕业后去哪找工作 服务器人满了怎么进去 第一届指挥控制网络安全大会 西安java软件开发月薪 我的专业是计算机网络技术的英语 计算机考网络安全
0