教程:如何直接从可视化CNN layers中的特征

简介: 教程:如何直接从可视化CNN layers中的特征

简介


我们把神经网络比作眼睛,我们看看卷积神经网络(CNN)能够观察到什么:

[站外图片上传中...(image-d0c56d-1609856640469)]


基础条件:-

  • 读者知道如何构建CNN模型。
  • 读者了解可训练的参数计算以及各个中间层的输入和输出的大小。

注意:在这里,我们只关心构建CNN模型并观察其特征图(feature map),我们不关心模型的准确性。

import tensorflow as tf
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, Conv2D, Flatten, Dropout, MaxPooling2D
from tensorflow.keras.preprocessing.image import ImageDataGenerator, img_to_array, load_img
import os
import numpy as np
import matplotlib.pyplot as plt


现在,在不浪费时间的情况下,让我们建立一个CNN模型:

model=tf.keras.models.Sequential([
    tf.keras.layers.Conv2D(8,(3,3),activation ='relu', input_shape=(150,150,3)),
    tf.keras.layers.MaxPooling2D(2,2),
    tf.keras.layers.Conv2D(16,(3,3),activation ='relu'),
    tf.keras.layers.MaxPooling2D(2,2),
    tf.keras.layers.Conv2D(32,(3,3),activation ='relu'),
    tf.keras.layers.MaxPooling2D(2,2),
    tf.keras.layers.Flatten(),
    tf.keras.layers.Dense(1024,activation='relu'),
    tf.keras.layers.Dense(512,activation='relu'),
    tf.keras.layers.Dense(3,activation='softmax')    
 ])


该模型的summary是:

model.summary()

Model: "sequential"
_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
conv2d (Conv2D)              (None, 148, 148, 8)       224       
_________________________________________________________________
max_pooling2d (MaxPooling2D) (None, 74, 74, 8)         0         
_________________________________________________________________
conv2d_1 (Conv2D)            (None, 72, 72, 16)        1168      
_________________________________________________________________
max_pooling2d_1 (MaxPooling2 (None, 36, 36, 16)        0         
_________________________________________________________________
conv2d_2 (Conv2D)            (None, 34, 34, 32)        4640      
_________________________________________________________________
max_pooling2d_2 (MaxPooling2 (None, 17, 17, 32)        0         
_________________________________________________________________
flatten (Flatten)            (None, 9248)              0         
_________________________________________________________________
dense (Dense)                (None, 1024)              9470976   
_________________________________________________________________
dense_1 (Dense)              (None, 512)               524800    
_________________________________________________________________
dense_2 (Dense)              (None, 3)                 1539      
=================================================================
Total params: 10,003,347
Trainable params: 10,003,347
Non-trainable params: 0
_________________________________________________________________


正如我们在上面看到的,我们具有三个卷积层,其后是MaxPooling层,两个全连接层和一个输出全连接层。

相关文章
|
机器学习/深度学习 算法 TensorFlow
文本分类识别Python+卷积神经网络算法+TensorFlow模型训练+Django可视化界面
文本分类识别Python+卷积神经网络算法+TensorFlow模型训练+Django可视化界面
328 0
文本分类识别Python+卷积神经网络算法+TensorFlow模型训练+Django可视化界面
|
机器学习/深度学习 测试技术 Ruby
YOLOv5改进 | 主干篇 | 反向残差块网络EMO一种轻量级的CNN架构(附完整代码 + 修改教程)
YOLOv5改进 | 主干篇 | 反向残差块网络EMO一种轻量级的CNN架构(附完整代码 + 修改教程)
527 2
|
机器学习/深度学习 数据可视化 数据挖掘
R语言深度学习卷积神经网络 (CNN)对 CIFAR 图像进行分类:训练与结果评估可视化
R语言深度学习卷积神经网络 (CNN)对 CIFAR 图像进行分类:训练与结果评估可视化
|
机器学习/深度学习
时间序列预测模型之LSTM CNN+LSTM 单步 多步 输入输出 详细代码教程
时间序列预测模型之LSTM CNN+LSTM 单步 多步 输入输出 详细代码教程
764 0
|
机器学习/深度学习 数据可视化 网络架构
CAM, Grad-CAM, Grad-CAM++可视化CNN方式的代码实现和对比
当使用神经网络时,我们可以通过它的准确性来评估模型的性能,但是当涉及到计算机视觉问题时,不仅要有最好的准确性,还要有可解释性和对哪些特征/数据点有助于做出决策的理解。模型专注于正确的特征比模型的准确性更重要。
658 0
|
机器学习/深度学习 人工智能 数据可视化
人工智能创新挑战赛:助力精准气象和海洋预测Baseline[2]:数据探索性分析(温度风场可视化)、CNN+LSTM模型建模
人工智能创新挑战赛:助力精准气象和海洋预测Baseline[2]:数据探索性分析(温度风场可视化)、CNN+LSTM模型建模
人工智能创新挑战赛:助力精准气象和海洋预测Baseline[2]:数据探索性分析(温度风场可视化)、CNN+LSTM模型建模
|
机器学习/深度学习 存储 数据可视化
可视化CNN和特征图
卷积神经网络(cnn)是一种神经网络,通常用于图像分类、目标检测和其他计算机视觉任务。CNN的关键组件之一是特征图,它是通过对图像应用卷积滤波器生成的输入图像的表示。
265 0
可视化CNN和特征图
|
机器学习/深度学习 数据可视化 算法框架/工具
【深度学习系列】CNN模型的可视化
【深度学习系列】CNN模型的可视化
352 0
【深度学习系列】CNN模型的可视化
|
机器学习/深度学习 数据可视化 PyTorch
|
机器学习/深度学习 算法 数据可视化
实战教程 | 使用Scratch中的NumPy构建卷积神经网络,开放源码
根据滤波器的数目和每个滤波器的大小来创建零数组。上述代码创建了2个3x3大小的滤波器,(2,3,3)中的元素数字分别表示2:滤波器的数目(num_filters)、3:表示滤波器的列数、3:表示滤波器的行数。由于输入图像是灰度图,读取后变成2维图像矩阵,因此滤波器的尺寸选择为2维阵列,舍去了深度。如果图像是彩色图(具有3个通道,分别为RGB),则滤波器的大小必须为(3,3,3),最后一个3表示深度,上述代码也要更改,变成(2,3,3,3)。
实战教程 | 使用Scratch中的NumPy构建卷积神经网络,开放源码

热门文章

最新文章