Convolutional Neural Network,简称 CNN

简介: 卷积神经网络(Convolutional Neural Network,简称 CNN)是一种特殊的神经网络结构,主要应用于图像识别、语音识别等领域。CNN 的特点是具有卷积层和池化层,能够从复杂数据中提取特征,降低计算复杂度,并实现平移不变性。

卷积神经网络(Convolutional Neural Network,简称 CNN)是一种特殊的神经网络结构,主要应用于图像识别、语音识别等领域。CNN 的特点是具有卷积层和池化层,能够从复杂数据中提取特征,降低计算复杂度,并实现平移不变性。
CNN 的基本结构包括以下几个部分:

  1. 输入层:输入原始数据,如图像或音频信号等。
  2. 卷积层:提取数据特征,通常使用卷积核(一个小的函数)与输入数据进行局部卷积操作。卷积操作具有权值共享和局部性特点,可以减少计算量和参数数量。
  3. 池化层:对数据进行降维处理,通常采用最大池化或平均池化方法。池化层可以降低计算复杂度,同时保留关键信息。
  4. 激活函数:引入非线性变换,使神经网络可以学习更加复杂的函数。常见的激活函数有 sigmoid、ReLU 和 tanh 等。
  5. 全连接层:将卷积层和池化层输出的数据进行整合,并进行分类或回归等任务。全连接层类似于传统的多层感知器(Multilayer Perceptron,简称 MLP),但其参数数量较少,因为卷积层和池化层已经提取了关键特征。
  6. 输出层:根据任务类型,输出预测结果,如图像分类结果或目标检测坐标等。
    CNN 学习 demos 可以帮助您更好地理解卷积神经网络的结构和原理。以下是一些建议的学习 demos:
  7. TensorFlow 官方文档:TensorFlow 提供了详细的 CNN 教程和示例代码,涵盖了从简单的手写数字识别(MNIST 数据集)到复杂的图像分类(CIFAR-10 数据集)等多个应用场景。网址:https://www.tensorflow.org/tutorials
  8. PyTorch 官方文档:PyTorch 提供了丰富的 CNN 教程和 demos,包括图像分类、物体检测、语义分割等任务。网址:https://pytorch.org/tutorials
  9. Kaggle:Kaggle 是一个数据科学竞赛平台,提供了许多有趣的项目和数据集。您可以通过参加比赛,学习其他选手的 CNN 模型和技巧。网址:https://www.kaggle.com
    通过学习 demos 和实践项目,您可以更好地理解卷积神经网络的原理和应用,为以后的研究和工作打下坚实的基础。


Convolutions and maxpool
Load the CIFAR-10 images, and define helper functions to visualize the convolutions and weights:

%matplotlib inline
import numpy as np
import matplotlib.pyplot as plt
import cifar_tools
import tensorflow as tf

names, data, labels = \
    cifar_tools.read_data('./cifar-10-batches-py')


def show_conv_results(data, filename=None):
    plt.figure()
    rows, cols = 4, 8
    for i in range(np.shape(data)[3]):
        img = data[0, :, :, i]
        plt.subplot(rows, cols, i + 1)
        plt.imshow(img, cmap='Greys_r', interpolation='none')
        plt.axis('off')
    if filename:
        plt.savefig(filename)
    else:
        plt.show()


def show_weights(W, filename=None):
    plt.figure()
    rows, cols = 4, 8
    for i in range(np.shape(W)[3]):
        img = W[:, :, 0, i]
        plt.subplot(rows, cols, i + 1)
        plt.imshow(img, cmap='Greys_r', interpolation='none')
        plt.axis('off')
    if filename:
        plt.savefig(filename)
    else:
        plt.show()
names ['airplane', 'automobile', 'bird', 'cat', 'deer', 'dog', 'frog', 'horse', 'ship', 'truck']
(50000, 3072) (50000,)
Let's start with a an example image:

raw_data = data[4, :]
raw_img = np.reshape(raw_data, (24, 24))
plt.figure()
plt.imshow(raw_img, cmap='Greys_r')
plt.show()

Define the TensorFlow ops:

x = tf.reshape(raw_data, shape=[-1, 24, 24, 1])
W = tf.Variable(tf.random_normal([5, 5, 1, 32]))
b = tf.Variable(tf.random_normal([32]))

conv = tf.nn.conv2d(x, W, strides=[1, 1, 1, 1], padding='SAME')
conv_with_b = tf.nn.bias_add(conv, b)
conv_out = tf.nn.relu(conv_with_b)

k = 2
maxpool = tf.nn.max_pool(conv_out, ksize=[1, k, k, 1], strides=[1, k, k, 1], padding='SAME')
Visualize the effects of running the convolution and maxpool ops:

with tf.Session() as sess:
    sess.run(tf.global_variables_initializer())

    W_val = sess.run(W)
    print('weights:')
    show_weights(W_val)

    conv_val = sess.run(conv)
    print('convolution results:')
    print(np.shape(conv_val))
    show_conv_results(conv_val)


    conv_out_val = sess.run(conv_out)
    print('convolution with bias and relu:')
    print(np.shape(conv_out_val))
    show_conv_results(conv_out_val)


    maxpool_val = sess.run(maxpool)
    print('maxpool after all the convolutions:')
    print(np.shape(maxpool_val))
    show_conv_results(maxpool_val)
weights:

convolution results:
(1, 24, 24, 32)

convolution with bias and relu:
(1, 24, 24, 32)

maxpool after all the convolutions:
(1, 12, 12, 32)
目录
相关文章
|
机器学习/深度学习 TensorFlow 语音技术
Convolutional Neural Network,简称 CNN
卷积神经网络(Convolutional Neural Network,简称 CNN)是一种深度学习模型,主要用于图像识别、物体检测、语音识别等任务。CNN 通过局部感知、权值共享和下采样等操作,能够有效地提取图像特征,从而实现对图像的分类和识别。
209 4
|
机器学习/深度学习 PyTorch TensorFlow
卷积神经网络(Convolutional Neural Network,CNN)
卷积神经网络(Convolutional Neural Network,CNN)是一种深度学习模型,特别适用于处理具有网格结构的数据,如图像和语音等。CNN的核心思想是通过卷积操作和池化操作来提取输入数据的特征,并通过全连接层进行分类或回归任务。
160 0
|
机器学习/深度学习 TensorFlow Go
Convolutional Neural Network (CNN)
我自己写的代码和该教程略有不一样,有三处改动,第一个地方是用归一化(均值为0,方差为1)代替数值缩放([0, 1]),代替的理由是能提升准确率 第二处改动是添加了正则化,在Conv2D和Dense Layer中均有添加,可以抑制模型过拟合,提升val_acc 第三处改动是对模型训练五次进行acc取平均值,因为keras训练模型会有准确率波动,详细代码见文末链接
181 0
|
1月前
|
机器学习/深度学习 人工智能 算法框架/工具
深度学习中的卷积神经网络(CNN)及其在图像识别中的应用
【10月更文挑战第7天】本文将深入探讨卷积神经网络(CNN)的基本原理,以及它如何在图像识别领域中大放异彩。我们将从CNN的核心组件出发,逐步解析其工作原理,并通过一个实际的代码示例,展示如何利用Python和深度学习框架实现一个简单的图像分类模型。文章旨在为初学者提供一个清晰的入门路径,同时为有经验的开发者提供一些深入理解的视角。
|
7天前
|
机器学习/深度学习 计算机视觉 网络架构
为什么卷积现在不火了:CNN研究热度降温的深层原因分析
纵观近年的顶会论文和研究热点,我们不得不承认一个现实:CNN相关的研究论文正在减少,曾经的"主角"似乎正逐渐淡出研究者的视野。
29 11
为什么卷积现在不火了:CNN研究热度降温的深层原因分析
|
6天前
|
机器学习/深度学习 人工智能 算法框架/工具
深度学习中的卷积神经网络(CNN)及其在图像识别中的应用
【10月更文挑战第36天】探索卷积神经网络(CNN)的神秘面纱,揭示其在图像识别领域的威力。本文将带你了解CNN的核心概念,并通过实际代码示例,展示如何构建和训练一个简单的CNN模型。无论你是深度学习的初学者还是希望深化理解,这篇文章都将为你提供有价值的见解。
|
21天前
|
机器学习/深度学习 人工智能 自动驾驶
深度学习中的卷积神经网络(CNN)及其应用
【10月更文挑战第21天】本文旨在深入探讨深度学习领域的核心组成部分——卷积神经网络(CNN)。通过分析CNN的基本结构、工作原理以及在图像识别、语音处理等领域的广泛应用,我们不仅能够理解其背后的技术原理,还能把握其在现实世界问题解决中的强大能力。文章将用浅显的语言和生动的例子带领读者一步步走进CNN的世界,揭示这一技术如何改变我们的生活和工作方式。
|
28天前
|
机器学习/深度学习 人工智能 监控
深入理解深度学习中的卷积神经网络(CNN):从原理到实践
【10月更文挑战第14天】深入理解深度学习中的卷积神经网络(CNN):从原理到实践
82 1
|
7天前
|
机器学习/深度学习 人工智能 自动驾驶
深入解析深度学习中的卷积神经网络(CNN)
深入解析深度学习中的卷积神经网络(CNN)
21 0
|
10天前
|
机器学习/深度学习 人工智能 TensorFlow
深度学习中的卷积神经网络(CNN)及其在图像识别中的应用
【10月更文挑战第32天】本文将介绍深度学习中的一个重要分支——卷积神经网络(CNN),以及其在图像识别领域的应用。我们将通过一个简单的代码示例,展示如何使用Python和TensorFlow库构建一个基本的CNN模型,并对其进行训练和测试。

热门文章

最新文章