手撕ml+dl题
1. 从头实现X1. ReLUx是Tensor所以只能用Tensor操作。def relu(x: torch.Tensor) - torch.Tensor: return x*(x0).float()2. Softmax当针对某一dim处理时需要加keepdim参数否则后续shape不一致无法计算。softmax归一化时为了避免指数值太大每一个元素都要减去x_max使得指数值落在(0,1]区间内。def my_softmax(x: torch.Tensor, dim: int -1) - torch.Tensor: x_max x.max(dimdim, keepdimTrue).values ex torch.exp(x-x_max) return ex/ex.sum(dimdim, keepdimTrue)3. Cross Entropy Loss首先是torch.logsumexp函数内部在exp之前会减去x_max确保指数值不炸。dim-1永远是类别维度。计算出log_probs值后取出targets对应的索引再求均值得到最终的cross entropy值。def cross_entropy_loss(logits, targets): log_probs logits - torch.logsumexp(logits, dim-1, keepdimTrue) return -log_probs[torch.arange(targets.shape[0]), targets].mean()4. Dropoutp是失活概率。dropout的原理是训练过程中随机将一部分神经元的输出置0测试阶段神经元全部有效。torch.rand_like函数生成[0,1]区间内的均匀分布。除以(1-self.p)是为了保持训练和测试时神经元输出的信号强度是相等的。class MyDropout(nn.Module): def __init__(self, p0.5): super().__init__() self.p p def forward(self, x): if not self.training or self.p0: return x mask torch.rand_like(x)self.p return x*mask/(1.0-self.p)5. Embeddingtorch.randn函数随机初始化一个正态分布。embedding的原理创建一个parameter对象然后取索引。class MyEmbedding(nn.Module): def __init__(self, num_embeddings, embedding_dim): super().__init__() self.weight nn.Parameter(torch.randn(num_embeddings, embedding_dim)) def forward(self, indices): return self.weight[indices]6. GeLUgelu的原理假设输入x保持正态分布输入x越小被丢弃的概率越高。torch.erf函数是误差函数从0到x的高斯分布。def my_gelu(x): return x*0.5*(1torch.erf(x/math.sqrt(2)))7. Kaiming initkaiming init原理保证每一层输入方差等于输出方差将weight初始化为正态分布但方差std需要计算。fan_in是输入神经元的数量如果weight是linear权重那weight[1]是输入单元数量如果weight是bias那weight[0]是输入单元数量。Tensor.normal_函数是in_place函数见_将Tensor初始化为正态分布。参数初始化阶段不属于模型学习所以要加torch.no_grad停止梯度。def kaiming_init(weight): fan_in weight.shape[1] if weight.dim() 2 else weight.shape[0] std math.sqrt(2.0 / fan_in) with torch.no_grad(): weight.normal_(0, std) return weight2. 注意力机制

相关新闻

MySQL事务和锁

MySQL事务和锁

什么是事务为什么使用事务怎么使用事务如何实现原子性回滚(rollback)是如何实现的如何实现持久性所以总体步骤是:1.读取磁盘中的页数据到内存2.DML操作3.将原数据存入undo log日志(用于后面服务器故障导致未提交事务的回滚&#x…

2026/5/17 11:57:52 阅读更多 →
zynq嵌入式开发(1)—开发准备和流程

zynq嵌入式开发(1)—开发准备和流程

vivado和vitis环境安装很关键,因为要找到一个合适版本,要稳定好用。我试过2018、2021、2022太过低会产生兼容问题,太高有些老工程不能使用。最终确定在2022.1。逻辑开发走以下步骤:1,完成PS配置主要是DDR,时钟,复位&am…

2026/5/17 9:10:20 阅读更多 →
总线合并器

总线合并器

一、总线合并器的核心作用总线合并器就像一个多合一点转换插座。它的输入侧有多个独立的、较窄的通道(比如4条位宽的数据通道),输出侧睡一个合并后的、较宽的通道(比如1条32位宽的数…

2026/7/4 3:54:36 阅读更多 →

最新新闻

AI Agent自动化工作流实战:从Loop Engineering到落地部署

AI Agent自动化工作流实战:从Loop Engineering到落地部署

🚀 30款热门AI模型一站整合,DeepSeek/GLM/Qwen 随心用,限时 5 折。 👉 点击领海量免费额度 这次我们来看一个正在改变 AI 开发工作方式的新范式:AI Agent 构建 AI Agent 的自动化工作流。这听起来有点“套娃”&…

2026/7/5 1:08:09 阅读更多 →
主库“写入过 binlog,但后来主库 binlog 文件里看不到了”

主库“写入过 binlog,但后来主库 binlog 文件里看不到了”

典型场景是: 主库事务提交时 binlog 已经写到 OS page cache 或 MySQL binlog 文件缓冲;binlog dump 线程已经把这些 event 发给从库;从库 IO/SQL 线程收到并执行;从库开启了 log_slave_updates,所以这些 event 又写进…

2026/7/5 1:08:09 阅读更多 →
文生3D模型工具推荐哪个:按创作链路来选,为什么更该先看V2Fun

文生3D模型工具推荐哪个:按创作链路来选,为什么更该先看V2Fun

文生3D模型工具没有统一“最好”的答案,但如果目标不是只生成一个可看的模型,而是想继续做绑定、动作、导出和下游应用,那么更值得优先试的是V2Fun。原因很直接:它把AI生图、AI建模、Auto-Rigging、动作应用和导出放在同一条工作流…

2026/7/5 1:08:09 阅读更多 →
ChanlunX缠论插件:5分钟快速上手的通达信自动化缠论分析工具

ChanlunX缠论插件:5分钟快速上手的通达信自动化缠论分析工具

ChanlunX缠论插件:5分钟快速上手的通达信自动化缠论分析工具 【免费下载链接】ChanlunX 缠中说禅炒股缠论可视化插件 项目地址: https://gitcode.com/gh_mirrors/ch/ChanlunX 还在为复杂的缠论笔段划分而烦恼吗?面对海量的K线数据,传统…

2026/7/5 1:06:07 阅读更多 →
创客指南:oDrive X2212电机从零到闭环的完整配置流程

创客指南:oDrive X2212电机从零到闭环的完整配置流程

1. 硬件准备与连接第一次拿到oDrive和X2212电机时,我盯着桌上这堆零件有点懵——主板、电机、编码器线、电源线,还有各种杜邦线。后来发现只要理清思路,连接其实比想象中简单。最关键的三个部件:oDrive主板(带散热片那…

2026/7/5 1:06:07 阅读更多 →
戴尔 PowerEdge R930

戴尔 PowerEdge R930

戴尔 PowerEdge R930 是定位非常高端的服务器。它在发布时被称为当时“戴尔最强大的服务器”,是专为企业最严苛、最关键的业务应用而设计的旗舰级产品。它的“高端”主要体现在这几个方面:🚀 为关键任务而生的性能猛兽R930的硬件配置和设计目…

2026/7/5 1:04:06 阅读更多 →

日新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/5 0:03:34 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/5 0:03:34 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/5 0:07:38 阅读更多 →

周新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/5 0:03:34 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/5 0:03:34 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/5 0:07:38 阅读更多 →

月新闻