当前位置: 首页 > news >正文

7.神经网络基础

7.1 构造网络模型

#自定义自己的网络模块
import torch
from torch import nn
from torch.nn import functional as F
class MLP(nn.Module):def __init__(self):super().__init__()self.hidden=nn.Linear(20,256)self.out=nn.Linear(256,10)#定义模型的前向传播,即如何根据输入X返回所需的模型输出def forward(self,x):x=self.hidden(x)x=F.relu(x)x=self.out(x)return x
X=torch.normal(mean=0.5,std=2.0,size=(2,20))
net=MLP()
net(X)

7.2 参数管理与初始化

#访问参数
import torch
from torch import nn
net=nn.Sequential(nn.Linear(4,8),nn.ReLU(),nn.Linear(8,1))
X=torch.rand(size=(2,4))
print(net[2].state_dict())
print(type(net[2].bias))
print(net[2].bias)
print(net[2].bias.data)
print(net[2].bias.grad)
print(*[(name,param.shape) for name,param in net[0].named_parameters()])
print(*[(name,param.shape) for name,param in net.named_parameters()])
print(net.state_dict()['2.bias'].data)
import torch
from torch import nn
net=nn.Sequential(nn.Linear(4,8),nn.ReLU(),nn.Linear(8,1))
def init_weight(m):if type(m)==nn.Linear:nn.init.normal_(m.weight,mean=0,std=0.01)nn.init.zeros_(m.bias)
def init_constant(m):if type(m)==nn.Linear:nn.init.constant_(m.weight,1)nn.init.zeros_(m.bias)
net.apply(init_weight)
print(net[0].weight.data[0],net[0].bias.data[0])
net.apply(init_constant)
print(net[0].weight.data[0],net[0].bias.data[0])
#参数绑定
shared=nn.Linear(8,8)
net=nn.Sequential(nn.Linear(4,8),nn.ReLU(),shared,nn.ReLU(),shared,nn.ReLU(),nn.Linear(8,1))
net(X)
print(net[2].weight.data[0]==net[4].weight.data[0])
net[2].weight.data[0,0]=100
print(net[2].weight.data[0]==net[4].weight.data[0])

7.3 自定义层

#如何自定义一个层
import torch
from torch import nn
class centeredLayer(nn.Module):def __init__(self):super().__init__()def forward(self,X):return X-X.mean()
layer=centeredLayer()
layer(torch.FloatTensor([1,2,3,4,5]))
net=nn.Sequential(nn.Linear(8,128),centeredLayer())
Y=net(torch.rand(4,8))
Y.mean()

7.4 文件读写与模型保存

#文件读写
import torch
from torch import nn
from torch.nn import functional as F
x=torch.arange(4)
y=torch.zeros(4)
torch.save(x,'x-file')
x2=torch.load('x-file')
print(x2)
torch.save([x,y],'x-files')
x2,y2=torch.load('x-files')
print(x2,y2)
#模型保存
import torch
from torch import nn
from torch.nn import functional as F
class MLP(nn.Module):def __init__(self):super().__init__()self.hidden=nn.Linear(20,256)self.out=nn.Linear(256,10)#定义模型的前向传播,即如何根据输入X返回所需的模型输出def forward(self,x):x=self.hidden(x)x=F.relu(x)x=self.out(x)return x
X=torch.normal(mean=0.5,std=2.0,size=(2,20))
net=MLP()
Y=net(X)
torch.save(net.state_dict(),'mlp.params')
#读取权重
clone=MLP()
clone.load_state_dict(torch.load('mlp.params'))
clone.eval()
Y_clone=clone(X)
Y_clone==Y
http://www.xdnf.cn/news/1094689.html

相关文章:

  • SpringBoot集成文件 - 大文件的上传(异步,分片,断点续传和秒传)
  • huggingface 笔记: Trainer
  • Airtest 的 Poco 框架中,offspring()
  • 使用Python求解最优化问题:从理论到实践的全方位指南
  • 2025年上半年软件设计师考后分享
  • LLM中 最后一个词语的表征(隐藏状态)通常会融合前面所有词语的信息吗?
  • 跨服务sqlplus连接oracle数据库
  • Flink-1.19.0源码详解6-JobGraph生成-后篇
  • 【Java】【字节面试】字符串中 出现次数最多的字符和 对应次数
  • pytorch chunk 切块
  • 两种方式清除已经保存的git账号密码
  • 11.7 ChatGPT奖励模型完全解读:RLHF核心技术深度剖析与Hugging Face实战
  • MyBatisPlus-03-扩展功能
  • 学习日记-spring-day44-7.9
  • 前端进阶之路-从传统前端到VUE-JS(第四期-VUE-JS页面布局与动态内容实现)(Element Plus方式)
  • 2025快手创作者中心发布视频python实现
  • 基于docker进行渗透测试环境的快速搭建(在ubantu中docker设置代理)
  • 单细胞入门(2)-经典案例分析
  • 分治算法---快排
  • 【TCP/IP】2. 计算机网络与因特网体系结构
  • Linux驱动04 --- 网络编程TCP客户端
  • 【AI News | 20250708】每日AI进展
  • mysql 故障检测与处理
  • 【牛客刷题】游游的字母串
  • RIP实验
  • 练习:对象数组 5
  • DolphinScheduler 3.2.0 Worker启动核心源码解析
  • C/C++ 高频八股文面试题1000题(二)
  • EPLAN 电气制图(六):结构盒与设备管理器核心概念(基础知识选看)
  • Shader面试题100道之(41-60)