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

动手学深度学习(Pytorch版)代码实践 -卷积神经网络-16自定义层

16自定义层

import torch
import torch.nn.functional as F
from torch import nnclass CenteredLayer(nn.Module):def __init__(self):super().__init__()#从其输入中减去均值#X.mean() 计算的是整个张量的均值#希望计算特定维度上的均值,可以传递 dim 参数。#例如,每一列均值,X.mean(dim=0)def forward(self, X):return X - X.mean()layer = CenteredLayer()
"""
torch.FloatTensor: 这是 PyTorch 中的一种张量类型,专门用于存储浮点数数据。
尽管 torch.FloatTensor 是创建浮点张量的一种方式,
但在 PyTorch 的最新版本中,建议使用 torch.tensor 函数,
因为它更加通用和灵活。
"""#均值为 3.0
print(layer(torch.FloatTensor([1, 2, 3, 4, 5])))
#tensor([-2., -1.,  0.,  1.,  2.])net = nn.Sequential(nn.Linear(8, 128), CenteredLayer())
"""
torch.rand和torch.randn有什么区别?
一个均匀分布 [0,1) ,一个是标准正态分布。
"""
Y = net(torch.rand(4, 8))
print(Y.mean())
#tensor(-6.5193e-09, grad_fn=<MeanBackward0>)#带参数的层
#实现自定义版本的全连接层
"""
该层需要两个参数,一个用于表示权重,另一个用于表示偏置项。 
在此实现中,我们使用修正线性单元作为激活函数。
该层需要输入参数:in_units和units,分别表示输入数和输出数。
"""
class MyLinear(nn.Module):def __init__(self, in_units, units):super().__init__()#nn.Parameter 是一种特殊的张量,会被自动添加到模型的参数列表中。self.weight = nn.Parameter(torch.randn(in_units, units))self.bias = nn.Parameter(torch.randn(units,))def forward(self, X):linear = torch.matmul(X, self.weight.data) + self.bias.datareturn F.relu(linear)linear = MyLinear(5, 3)
print(linear.weight)
"""
tensor([[ 0.7130, -1.0828,  0.2203],[-2.0417, -0.1385,  0.6858],[-0.5163, -0.6009,  0.0783],[-0.3642,  0.5252, -0.6144],[-0.6479, -0.4700,  0.1486]], requires_grad=True)
"""
#使用自定义层直接执行前向传播计算。
print(linear(torch.rand(2, 5)))
"""
tensor([[0.0000, 0.0000, 0.2741],[0.0000, 0.0000, 0.5418]])
"""#使用自定义层构建模型,就像使用内置的全连接层一样使用自定义层。
net = nn.Sequential(MyLinear(64, 8), MyLinear(8, 1))
print(net(torch.rand(2, 64)))
"""
tensor([[9.0080],[7.6102]])
"""
http://www.lryc.cn/news/386099.html

相关文章:

  • 树莓派4设置
  • 44.商城系统(二十五):k8s基本操作,ingress域名访问,kubeSphere可视化安装
  • MySQL高级查询
  • 聊聊啥项目适合做自动化测试
  • ROS2开发机器人移动
  • 【强化学习】第02期:动态规划方法
  • 安全技术和防火墙(二)
  • 【51单片机入门】数码管原理
  • 三星DRAM、NAND,“又双叒叕”带头涨价了
  • 星戈瑞FITC-PEG2000-Biotin的生物相容性
  • 数据资产管理的艺术:构建智能化、精细化的数据资产管理体系,从数据整合、分析到决策支持,为企业提供一站式的数据资产解决方案,助力企业把握数字时代的新机遇
  • 基于Java微信小程序校园自助打印系统设计和实现(源码+LW+调试文档+讲解等)
  • 股票复盘思路
  • OpenGL系列(六)摄像机
  • 一个端口配置两个vue和后端服务,nginx以及前后端服务怎么配?
  • 295. 数据流的中位数
  • OCR训练和C#部署英文字符训练
  • webpack【实用教程】
  • 如何使用C++进行文件读写操作
  • Tensorflow Lite移动平台编译
  • 2024年6月24日-6月30日(ue5肉鸽视频p16-p25)
  • LeetCode.面试题17.24.最大子矩阵详解
  • 云动态摘要 2024-06-28
  • 六、资产安全—信息分级资产管理与隐私保护(CISSP)
  • 香港服务器托管对外贸行业必要性和优势
  • Vue Router 导航守卫,多次执行的解决方案
  • SpringBoot集成道历(实现道历日期查询)
  • 面对.rmallox勒索病毒:如何有效防范及应对
  • 嘉立创学习
  • ECharts 响应式设计