深度学习技术之卷积神经网络

卷积神经网络

1. 导入需要的库

导入numpy、pandas,tensorflow、sklearn等库,以及导入matplotlib的pyplot模块。从sklearn库的datasets模块中导入load_iris函数,以及从sklearn库的model_selection模块中导入train_test_split函数。从TensorFlow库中导入Keras模块。

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import sklearn 
import tensorflow as tf
from tensorflow import keras

2. 加载并显示两张图像

2.1 加载图像

使用了sklearn.datasets.load_sample_image函数来加载两个预先定义的样本图像,并将图像的像素值从0-255的范围缩放到0-1的范围。

china = load_sample_image("china.jpg") / 255
flower = load_sample_image("flower.jpg") / 255

2.2 创建子图

在Matplotlib中创建了两个新的子图,三个数值分别代表行数、列数以及子图的位置。(从左到右,从上到下)。

plt.subplot(1,2,1)
plt.imshow(china)
plt.subplot(1,2,2)
plt.imshow(flower)

运行结果:
在这里插入图片描述

2.3 打印图像形状

打印出“china.jpg”图像的形状,即图像的高度、宽度和颜色通道数。

print("china.jpg的维度: ",china.shape)
print("flower.jpg的维度: ",flower.shape)

运行结果:
在这里插入图片描述

2.4 打印合并后的图像数组的形状

将两个图像合并为一个NumPy数组,其中第一个元素是“china.jpg”图像,第二个元素是“flower.jpg”图像,计算并存储了合并后的图像数组的形状,并打印出合并后的图像数组的形状,即数据集中图像的数量和每个图像的高度、宽度和颜色通道数。

images = np.array([china,flower])
images_shape = images.shape
print("数据集的维度: ",images_shape)

运行结果:
在这里插入图片描述

3. 卷积层

3.1 定义变量

3.1.1 卷积核的大小(u)

u通常表示卷积核(也称为过滤器)的边长。在这里,u被设置为7,意味着卷积核是一个7x7的矩阵。

在图像处理中,卷积核用于检测图像中的特定模式或特征。卷积核的大小(u)决定了它可以检测的特征的大小。

u = 7 # 卷积核边长
3.1.2 滑动步长(s)

s通常表示卷积核的滑动步长(stride)。在这里,s被设置为1,这意味着在每一步,卷积核都会在输入图像上滑动一个像素。

滑动步长(s)决定了卷积核在图像上移动的步长。较小的滑动步长可以提高特征的分辨率,但会增加计算成本。

s = 1 # 滑动步长
3.1.3 输出特征图的数量(p)

p通常表示输出特征图的数量。在这里,p被设置为5,意味着卷积操作将生成5个不同的特征图。

输出特征图的数量(p)决定了卷积操作将生成多少个特征图。每个特征图都捕获了图像的不同方面或特征。

p = 5 # 输出特征图数目

3.2 卷积层形式

input_shape: 输入数据的形状,它是一个元组,代表输入特征图的尺寸加上通道数。

activation: 激活函数,这里使用的是 ReLU(修正线性单元)激活函数。

padding: padding 策略,“SAME” 表示使用边缘填充,使得输出特征图的尺寸与输入相同。

conv = keras.layers.Conv2D(filters = p, kernel_size = u, strides = s, padding="SAME", activation="relu", input_shape=images_shape)

3.3 打印张量

image_after_conv = conv(images)
print("卷积后的张量大小: ", image_after_conv.shape)

运行结果:
在这里插入图片描述

4. 池化层

4.1 最大池化层

最大池化(Max Pooling)是一种池化操作,它通过在局部区域中取最大值来减少数据的维度。

pool_max = keras.layers.MaxPool2D(pool_size=2)
image_after_pool_max = pool_max(image_after_conv)
print("最大汇聚后的张量大小: ",image_after_pool_max.shape)

运行结果:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值