TensorFlow 构建CNN网络

该文详细介绍了卷积神经网络(CNN)的结构,包括100x100x3的输入图像经过3x3卷积、ReLU激活、MaxPooling,以及后续的两层相同结构的卷积层,最后通过Flatten和全连接层,最终输出类别为3的结果。模型使用了TensorFlow的Keras库构建。
摘要由CSDN通过智能技术生成

特征图计算大小公式:

# 特征图 = (N + 2 * p -F) / S + 1
# 特征图 = (输入图像大小 + padding大小 * 2 - 卷积核) / 步长 + 1

# N 输入图像大小
# P padding大小
# F 卷积核大小
# S 步长

CNN网络

# 网络:
# 100*100*3 输入图像大小

# 3*3 Conv(向量卷积运算)
# relu 激活函数
# Pooling 1/2 池化       50*50*16

# 3*3 Conv(向量卷积运算)
# relu 激活函数
# Pooling 1/2 池化       25*25*32

# 3*3 Conv(向量卷积运算)
# relu 激活函数
# Pooling 1/2 池化       12*12*64

# Flatten 降维函数        12*12*64 = 9216
# 计算(金字塔原则)全连接:开方(9216 * 类别数3)= 166.27...
# fc(全连接) 166 relu 激活函数
# fc(全连接) 22 relu 激活函数   开方(166*3) = 22.31...
# fc(全连接) 3 sigmoid 激活函数

# 当前输出类型为3
import tensorflow as tf
from tensorflow.keras import layers, Sequential

model = Sequential([
    # 2维卷积,卷积核个数16, 卷积核大小3*3, padding='same'按照原大小输出, 设置输入大小, 激活函数选择
    layers.Conv2D(16, 3, padding='same', input_shape=(100, 100, 3), activation='relu'),
    # 池化
    layers.MaxPool2D(),
    layers.Conv2D(32, 3, padding='same', activation='relu'),
    layers.MaxPool2D(),
    layers.Conv2D(64, 3, padding='same', activation='relu'),
    layers.MaxPool2D(),
    # 转为1维
    layers.Flatten(),
    # 全连接层:layers.Dense
    layers.Dense(166, activation='relu'),
    layers.Dense(22, activation='relu'),
    # 输出 类别数
    layers.Dense(3, activation='sigmoid'),
])
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

默执_

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

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

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

打赏作者

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

抵扣说明:

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

余额充值