栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

深度学习之自定义层

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

深度学习之自定义层

不带参数的层

        下面的CenteredLayer类要从其输入中减去均值。要构建它,我们只需继承基础层类并实现正向传播功能

        

import torch
import torch.nn.functional as F
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.Senquential(nn.Linear(8,128),CenteredLayer())

        健全性检查:向网络发送随机数据后,检查均值是否为0。由于我们处理的是浮点数,因为存储精度的原因,我们仍然可能会看到一个非常小的非零数

Y = net(torch.rand(4, 8))
Y.mean()
       带参数的层

            定义一个带参数的层并用内置的函数进行初始化,使用ReLU作为激活函数,

Class MyLinear(nn.Model):
    def __init__(self,in_units,units):
        super().__init__()
        self.weight = nn.Parmeter(torch.randn(in_units,units))
        self.bias = nn.Parameter(torch.randn(units,))
     def forward(self,X):
        linear = torch.matual(X,self.weight.data)+self.bias.data
        return F.relu(linear)

                  接下来实例化MyLinear类并访问其模型参数

linear = MyLinear(5,3)
linear.weight

                  可以使用自定义层构建模型。我们可以像使用内置的全连接层一样使用自定义层

net = nn.Sequential(MyLinear(64, 8), MyLinear(8, 1))
net(torch.rand(2, 64))

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/268930.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号