CNN(Convolutional Neural Networks)学习总结

本文是对卷积神经网络(CNN)的学习总结,从经典的LeNet-5到现代的AlexNet、VGG和GoogLeNet,探讨CNN的重要论文及其贡献。介绍了CNN的基本结构,包括卷积层、池化层、全连接层和Dropout层,并解释了各层的作用和工作原理。此外,还提到了训练CNN时常用的学习算法和损失函数选择。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

刚开始学习cnn,把前段时间看cnn相关的内容,今天稍微的总结下。在文章中差漏的地方,还望见谅。权当做交流。

文章开头先推荐一个网址:
https://github.com/BVLC/caffe/wiki/Model-Zoo
罗列了主流会议,近年来cnn上的相关进展和各种model,感兴趣的可以拿来阅读一番。

**

Cnn几篇重要的论文

**
Lenet-5 :Yann LeCun等在1998年发布的论文”Gradient-based learning applied to document recognition(Yan)” 不过当时并没有流行开来。

Alexnet:真正将cnn流行开来的是,Alex Krizhevsky等人在2012年发布的论文:Imagenet classification with deep convolutional neural networks. 在imagenet比赛上,将Top5错误率由26%大幅降低至15%。

VGG:基于alexnet,牛津大学 visual geometry group(VGG)Karen Simonyan 和Andrew Zisserman 于14年撰写的论文” Very Deep Convolutional Networks for Large-Scale Image Recognition”,主要探讨了深度对于网络的重要性;并建立了一个19层的深度网络获得了很好的结果;在ILSVRC上定位第一,分类第二。

GoogLeNet:Christian Szegedy等人针对ImageNet2014的比赛,撰写了” Going deeper with convolutions”,该论文中的方法是2014年比赛的第一名,包括task1分类任务和task2检测任务。

卷积神经网络(Convolutional Neural Networks, CNN)是一种专门用于处理网格状数据(例如图像)的深层学习架构。它们由卷积层、池化层、激活函数和全连接层组成。由于篇幅限制,这里我会提供一个简化版的Python示例,使用Keras库构建基本的CNN。假设我们想在一个MNIST手写数字数据集上训练一个简单的CNN。 ```python # 导入必要的库 from tensorflow.keras import layers, models import tensorflow as tf # 创建一个Sequential模型 model = models.Sequential() # 添加卷积层 model.add(layers.Conv2D(32, (3, 3), activation='relu', input_shape=(28, 28, 1))) # 输入图像大小为28x28,单通道灰度图 model.add(layers.MaxPooling2D((2, 2))) # 下采样操作 # 可能添加更多的卷积层和池化层... model.add(layers.Flatten()) # 展平卷积层的输出以便于全连接层处理 model.add(layers.Dense(64, activation='relu')) # 全连接层 model.add(layers.Dropout(0.5)) # 防止过拟合 model.add(layers.Dense(10, activation='softmax')) # 输出层,10个类别对应0到9的手写数字 # 编译模型 model.compile(optimizer='adam', loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True), metrics=['accuracy']) # 加载MNIST数据并训练模型 (train_images, train_labels), (test_images, test_labels) = tf.keras.datasets.mnist.load_data() train_images = train_images.reshape((60000, 28, 28, 1)) test_images = test_images.reshape((10000, 28, 28, 1)) model.fit(train_images, train_labels, epochs=5, validation_data=(test_images, test_labels)) ``` 这只是一个基础示例,实际使用时还需要预处理数据、调整超参数和进行更复杂的架构设计。如果你想查看完整的代码实现,可以参考Keras官方文档或GitHub上的开源项目。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值