卷积神经网络:由输入大小计算输出大小

文章详细介绍了如何根据输入大小、卷积核尺寸、填充和步幅来计算卷积和池化操作后的输出尺寸。对于卷积,输出大小通过特定公式计算,要求结果可除尽。池化操作通常步幅等于卷积核大小,其输出大小计算方式类似。当输出尺寸为非整数时,不同深度学习框架可能有不同的处理方式,如四舍五入或报错。

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

由输入大小计算输出大小

卷积操作

假设输入大小为**(H,W),卷积核(滤波器)大小为(FH,FW)**,输出大小 为(OH,OW),填充为P,步幅为S。则输出大小可以通过下式计算。
O H = H + 2 P − F H S + 1 OH = \frac{H + 2P - FH}{S} + 1 OH=SH+2PFH+1
O W = W + 2 P − F W S + 1 OW = \frac{W + 2P - FW}{S} + 1 OW=SW+2PFW+1

例1: 输入大小:(7,7);填充:1;步幅:2;卷积核大小:(3,3)
O H = 7 + 2 × 1 − 3 2 + 1 = 4 OH = \frac{7 + 2×1 - 3}{2} + 1=4 OH=27+2×13+1=4
O W = 7 + 2 × 1 − F W 2 + 1 = 4 OW = \frac{7 + 2×1 - FW}{2} + 1=4 OW=27+2×1FW+1=4
所以输出大小(4,4)。
通过上述式子就可以计算输出大小。但是所设定的值必须使 H + 2 P − F H S \frac{H + 2P - FH}{S} SH+2PFH W + 2 P − F W S \frac{W + 2P - FW}{S} SW+2PFW分别可以除尽。当输出大小无法除尽时(就算结果为小数),需要采取报错等对策。

注:有的深度学习框架会选择四舍五入而不进行报错处理。

池化操作

假设输入大小为**(H,W),卷积核(滤波器)大小为(F,F)**,输出大小 为(OH,OW),填充为P,步幅为S。则输出大小可以通过下式计算。

注:一般情况下,步幅S等于卷积核大小F,即 S = F

公式如下:
O H = H − F S + 1 OH = \frac{H - F}{S} + 1 OH=SHF+1
O W = W − F S + 1 OW = \frac{W - F}{S} + 1 OW=SWF+1
例2: 输入大小:(28,28);步幅:2;卷积核大小:(2,2)
O H = 28 − 2 2 + 1 = 14 OH = \frac{28 - 2}{2} + 1=14 OH=2282+1=14
O W = 28 − 2 2 + 1 = 14 OW = \frac{28 - 2}{2} + 1=14 OW=2282+1=14
所以输出大小(4,4)。

03-19
### IEEE 802.1Q VLAN Tagging Protocol Standard IEEE 802.1Q 是支持虚拟局域网(VLAN)的标准协议之一,通常被称为 Dot1q。该标准定义了一种用于以太网帧的 VLAN 标记系统以及交换机和桥接器处理这些标记帧的操作流程[^2]。 #### 协议结构概述 IEEE 802.1Q 的核心功能在于通过在以太网数据帧中插入特定字段来实现 VLAN 标签的功能。这种标签使得网络设备能够识别哪些流量属于哪个 VLAN,并据此执行转发决策。具体来说: - **Tag Header**: 在原始以太网帧头部增加了一个额外的 4 字节字段作为 VLAN 标签头。这四个字节包含了以下部分: - **Priority Code Point (PCP)**: 使用 3 比特表示优先级级别,范围从 0 到 7,主要用于 QoS 控制。 - **Canonical Format Indicator (CFI)**: 这是一个单比特位,在传统以太网环境中设置为零。 - **VLAN Identifier (VID)**: 使用 12 比特标识具体的 VLAN ID,理论上可以支持多达 4096 个不同的 VLAN(编号从 0 至 4095),其中某些特殊值保留给内部用途或管理目的。 #### 数据包处理机制 当一个带有 VLAN tag 的数据包进入支持 IEEE 802.1Q 的交换机时,它会依据此标签决定如何路由或者过滤该数据流。如果目标端口不属于同一 VLAN,则不会传输至其他无关联的物理接口上;反之亦然——只有相同 VLAN 成员之间才允许互相通信除非经过路由器跨网段访问[^1]。 此外,为了简化管理和配置过程并增强互操作性,还引入了一些辅助性的子协议和服务组件比如 GARP(通用属性注册协议)。GARP 可帮助分发有关 VLAN 成员资格的信息到各个连接节点以便动态调整其行为模式而无需频繁手动干预[^3]。 以下是创建带 VLAN TAG 的 Python 示例代码片段展示如何模拟构建这样的 Ethernet Frame: ```python from scapy.all import Ether, Dot1Q, IP, sendp def create_vlan_packet(src_mac="00:aa:bb:cc:dd:ee", dst_mac="ff:ff:ff:ff:ff:ff", vlan_id=100, src_ip="192.168.1.1", dst_ip="192.168.1.2"): ether = Ether(src=src_mac, dst=dst_mac) dot1q = Dot1Q(vlan=vlan_id) ip_layer = IP(src=src_ip, dst=dst_ip) packet = ether / dot1q / ip_layer return packet packet = create_vlan_packet() sendp(packet, iface="eth0") # Replace 'eth0' with your network interface name. ``` 上述脚本利用 Scapy 库生成包含指定源地址、目的地址及所属 VLAN 编号的数据报文并通过选定的网卡发送出去测试实际效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值