news 2026/8/21 3:02:20

对比tensorflow,从0开始学pytorch(三)--自定义层

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
对比tensorflow,从0开始学pytorch(三)--自定义层

上文虽然实现了GMS层的效果,但是前端代码太多,太ugly,也不好复用。今天抽空看了下pytorch中怎么自定义层,很简单,比tensorflow好用。

1. 任意文件夹创建个文件,和所有编程语言一样

2. 一样,集成nn.Module,然后自定义一个形参

这里需要花时间搞明白torch.nn.functional下的函数和torch.nn下的类的区别,一开始有点懵,想着为什么不做高级语言当中的静态函数,想明白了也就简单了。

图中的SPP_Sizes做了类型定义,python中一般情况不需要定义类型,但不定义在后面循环就会报错,看了下pytorch自带conv2d的源码,发现源码中非常严谨,每一个变量都定义了类型。

3. 调用就非常简单了,上一篇笔记中的冗长的代码,就可以一行调用

4. 简化后,代码看过去顺眼多了。附上GMS封装后的源码和训练结果

import torch import torch.nn as nn import torch.nn.functional as F class GMS(nn.Module): def __init__(self, Spp_Sizes:[]): super().__init__() if len(Spp_Sizes) == 0: self.SPP_Sizes = [2, 3, 4] else: self.SPP_Sizes = Spp_Sizes def forward(self, x): x_gap = F.adaptive_avg_pool2d(x, (1, 1)) x_gap = torch.flatten(x_gap, 1) x_gmp = F.adaptive_max_pool2d(x, (1, 1)) x_gmp = torch.flatten(x_gmp, 1) x_gms = torch.cat((x_gap, x_gmp), dim=1) for spp_size in self.SPP_Sizes: x_spp = F.adaptive_max_pool2d(x, (spp_size,spp_size)) x_spp = torch.flatten(x_spp, 1) x_gms = torch.cat((x_gms, x_spp), dim=1) return x_gms

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/21 13:44:14

DOOM网络同步技术深度解密:从帧同步到现代游戏架构的革命

还记得90年代第一次体验DOOM多人对战时那种震撼吗?当攻击在屏幕间穿梭,玩家们在虚拟世界中激烈对抗,你是否曾好奇:在那个网络带宽极其有限的年代,DOOM是如何实现如此流畅的多人同步体验的? 【免费下载链接】…

作者头像 李华
网站建设 2026/8/21 12:43:06

np.arange在数据科学中的5个实战应用场景

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 创建一个Jupyter笔记本,演示np.arange在机器学习预处理中的实际应用:1)生成交叉验证的K折索引 2)创建模拟数据的x坐标 3)等间距采样点评估模型 4)生成时间序…

作者头像 李华
网站建设 2026/8/21 11:11:33

AI助力Figma汉化插件开发:一键生成多语言UI

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 开发一个Figma插件,能够自动识别Figma界面中的英文文本元素,并使用AI翻译API将其转换为中文。要求插件支持批量翻译、翻译记忆库功能,并能保持原…

作者头像 李华
网站建设 2026/8/21 20:23:47

project - 1

项目实战目标 主机名IP地址client01192.168.88.10/24web1192.168.88.11/24web2192.168.88.12/24web3192.168.88.13/24database192.168.88.21/24nfs192.168.88.31/24haproxy01192.168.88.5haproxy02192.168.88.6 单机安装基于LNMP结构的WordPress网站 LNMP是一种常见的Web服务器…

作者头像 李华
网站建设 2026/8/21 13:51:06

FastAPI快速启动模板:极速构建高性能API的终极方案

FastAPI快速启动模板:极速构建高性能API的终极方案 【免费下载链接】FastAPI-boilerplate An extendable async API using FastAPI, Pydantic V2, SQLAlchemy 2.0, PostgreSQL and Redis. 项目地址: https://gitcode.com/gh_mirrors/fastap/FastAPI-boilerplate …

作者头像 李华
网站建设 2026/8/21 6:31:46

0x3f第二天滑动窗口

1.enumerate是python内置函数,和range都是内置函数,enumerate针对索引和对应元素都需要的时候,可以简化,就不用range了for key,value in enumerate(nums):这样就可以直接使用每一趟的…

作者头像 李华