电影网站源码怎么做的网站排名优化师
论文《NON-DEEP NETWORKS》
1、作用
论文提出了“Partnet”,这是一种新型的神经网络架构,旨在不依赖传统的深层架构就能在视觉识别任务中达到高性能。展示了在大规模基准测试如ImageNet、CIFAR-10和CIFAR-100上,即便是层数大大减少(大约12层)的网络也能够保持竞争力。
2、机制
1、Partnet采用并行子网络而不是传统的顺序层叠,从而减少了网络深度,同时保持或甚至增强了性能。这种“不尴不尬的并行”设计使得在不妥协模型学习复杂特征的能力下有效减少了计算深度。
2、该架构通过改良的VGG风格块,加入了跳跃连接、压缩和激励(Skip-Squeeze-and-Excitation, SSE)层,并使用了SiLU(Sigmoid Linear Unit)激活函数,以解决由于深度减少可能导致的表示能力限制问题。
3、独特优势
1、并行化:
Partnet的并行结构允许有效地将计算分布在多个处理单元上,显著提高了推理速度,而不增加网络的深度。
2、低延迟:
通过保持浅层架构,Partnet能够实现低延迟推理,适用于需要快速响应的应用场景。
3、可扩展性:
论文探索了如何通过增加宽度、分辨率和并行分支的数量来扩展Partnet,同时保持网络深度恒定。这种可扩展方法为进一步提高性能提供了路径,而不增加延迟
4、代码
import numpy as np
import torch
from torch import nn
from torch.nn import initclass ParNetAttention(nn.Module):# 初始化ParNet注意力模块def __init__(self, channel=512):super().__init__()# 使用自适应平均池化和1x1卷积实现空间压缩,然后通过Sigmoid激活函数产生权重图self.sse = nn.Sequential(nn.AdaptiveAvgPool2d(1), # 全局平均池化,将空间维度压缩到1x1nn.Conv2d(channel, channel, kernel_size=1), # 1x1卷积,用于调整通道的权重nn.Sigmoid() # Sigmoid函数,用于生成注意力图)# 通过1x1卷积实现特征重映射,不改变空间尺寸self.conv1x1 = nn.Sequential(nn.Conv2d(channel, channel, kernel_size=1), # 1x1卷积,不改变特征图的空间尺寸nn.BatchNorm2d(channel) # 批量归一化)# 通过3x3卷积捕获空间上下文信息self.conv3x3 = nn.Sequential(nn.Conv2d(channel, channel, kernel_size=3, padding=1), # 3x3卷积,保持特征图尺寸不变nn.BatchNorm2d(channel) # 批量归一化)self.silu = nn.SiLU() # SiLU激活函数,也被称为Swish函数def forward(self, x):# x是输入的特征图,形状为(Batch, Channel, Height, Width)b, c, _, _ = x.size()x1 = self.conv1x1(x) # 通过1x1卷积处理xx2 = self.conv3x3(x) # 通过3x3卷积处理xx3 = self.sse(x) * x # 应用空间压缩的注意力权重到x上y = self.silu(x1 + x2 + x3) # 将上述三个结果相加并通过SiLU激活函数激活,获得最终输出return y# 测试ParNetAttention模块
if __name__ == '__main__':input = torch.randn(3, 512, 7, 7) # 创建一个随机输入 pna = ParNetAttention(channel=512) # 实例化ParNet注意力模块output = pna(input) # 对输入进行处理print(output.shape) # 打印输出的形状,预期为(3, 512, 7, 7)