news 2026/4/20 23:58:16

神经网络 —— 搭建神经网络(实例)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
神经网络 —— 搭建神经网络(实例)

一、搭建神经网络

本案例

搭建神经网络,这里是一个简单的全连接神经网络

这里的全连接神经网络组成:

隐藏层1:nn.Linear(3,3),权重初始化采用标准化的xavier初始化 激活函数使用sigmoid

隐藏层2:nn.Linear(3,2),权重初始化采用标准化的He初始化 激活函数采用relu

输出层: nn.Linear(2,2),采用softmax做数据归一化,权重初始化采用标准化的xavier初始化

二、实现

自定义模型类,搭建自己的神经网络

1.继承 nn.Module 基础模型

class MyModel(nn.Module)

2.定义__init__方法,定义网络层

def __init__(self): super().__init__() # 1.定义网络层 self.linear1 = nn.Linear(3,3) self.linear2 = nn.Linear(3,2) self.linear3 = nn.Linear(2,2) # 2.参数初始化,一般不需要人为初始化,采用默认初始化即可 # 权重W 和 偏置b nn.init.xavier_normal_(self.linear1.weight) nn.init.zeros_(self.linear1.bias) nn.init.kaiming_normal_(self.linear2.weight) nn.init.zeros_(self.linear2.bias) nn.init.xavier_normal_(self.linear3.weight) nn.init.zeros_(self.linear3.bias)

3.重新forward方法,实现前向传播 (基类 方法)

def forward(self,x): # 1.把数据输入隐藏层1 经过sigmoid x = torch.sigmoid(self.linear1(x)) # 2.把数据输入隐藏层2 x = torch.relu(self.linear2(x)) # 3.把数据输入输出层 x = torch.softmax(self.linear3(x),dim=-1) # 4.返回结果 return x

主函数入口

# 测试 if __name__ == '__main__': # 1.创建模型对象 model = MyModel() print(model) model = model.to(device) # 2.查看模型的参数数量 summary(model, (3,)) ...
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/20 23:53:19

从CloudSim 3.0.3到4.0:一次部署,搞懂版本差异与容器仿真新特性

从CloudSim 3.0.3到4.0:深度解析版本差异与容器仿真实战 云计算仿真领域近年来迎来快速发展,作为该领域的标杆工具,CloudSim从3.0.3到4.0的演进不仅带来了技术架构的革新,更在容器化支持、依赖管理等方面实现了质的飞跃。本文将带…

作者头像 李华
网站建设 2026/4/20 23:52:57

Boost库配置后如何验证?一个多线程测试案例带你玩转VS2019

在VS2019中验证Boost库配置:多线程实战指南 Boost库作为C标准库的重要补充,为开发者提供了丰富的跨平台功能组件。许多开发者在完成Boost库的安装和VS2019环境配置后,常常面临一个关键问题:如何确认配置确实成功了?本文…

作者头像 李华
网站建设 2026/4/20 23:52:31

Java synchronized 与锁升级机制解析

Java synchronized与锁升级机制解析 在多线程编程中,同步机制是保证线程安全的核心手段之一。Java中的synchronized关键字作为最基础的同步工具,其底层实现经历了从重量级锁到轻量级锁的优化过程,锁升级机制更是提升了并发性能。本文将深入解…

作者头像 李华