卷积神经网络-池化与Python实现

本文介绍卷积神经网络中的池化技术,包括最大池化、平均池化及全局平均池化等方法,并提供了使用Python和TensorFlow实现这些池化操作的示例代码。

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

卷积神经网络通常在卷积操作后,采用池化方法降维。

具体方法有最大池化、平均池化以及全局平均池化。

按一定的大小(池,通常为2*2的矩形框)按序选取原图像中池中的元素(像素点),池一般不重叠,最大池化取池中最大元素,平均池化取池中元素均值,做为池化的输出。

例(均考虑一个通道,多通道分别池化):

最大池化

 

 平均池化:

 全局平均池化(计算原图所有像素点的均值),

 

全局平均池化一般CNN最后一次卷积后,通过全局平均池化,将高维变成一维,后面接全连接层,到输出。

代码:

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


image = tf.io.read_file("d:/datasets/4.jpg")  #读取图片
image = tf.image.decode_jpeg(image, channels=1)  #解码JPEG图片

plt.imshow(img,cmap="gray") #显示图片
plt.axis('off')  #不显示坐标轴

size=2  #设置池的大小2*2

def pool_mean(img,size=2):
    img_mean=np.zeros([img.shape[0]//size,img.shape[1]//size,img.shape[2]])
    for i in range(0,img.shape[0]//size*size,size):
        for j in range(0,img.shape[1]//size*size,size):
            for k in range(img.shape[2]):
                sum=0
                for m in range(size):
                    for n in range(size):
                        sum+=img[i+m,j+n,k]/(size*size)   #计算
                img_mean[i//size,j//size,k]= sum          #均值
    return img_mean


img_mean=pool_mean(img)   
plt.imshow(img_mean,cmap="gray") #显示图片
plt.axis('off')  #不显示坐标轴

def pool_max(img,size=2):
    img_max=np.zeros([img.shape[0]//size,img.shape[1]//size,img.shape[2]])
    for i in range(0,img.shape[0]//size*size,size):
        for j in range(0,img.shape[1]//size*size,size):
            for k in range(img.shape[2]):
                for m in range(size):
                    for n in range(size):
                        img_max[i//size,j//size,k]=max(img[i+m,j+n,k],\
                                                       img_max[i//size,j//size,k])
    return img_max

img_max=pool_max(img)   
plt.imshow(img_max,cmap="gray") #显示图片
plt.axis('off')  #不显示坐标轴

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ITLiu_JH

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值