pytorch的优化

在pytorch中,tensor是基于numpy与array的。内存共享。

在pythorch中,自定义层是继承nn.Module。将层与模型看成是模块,层与模型堪称模块,两者之间没有明确界限,定义方式与定义模型一样_init_与forward。

1、先定义全连接层,训练参数的定义是nn.Parameter,直接使用torch。tensor无法在#5中遍历到;

2、输入计算loss,反向传播计算参数梯度;

3、输出完成反向传播后层参数梯度。

# 导入pytorch库
import torch
# 从torch库中导入nn模块,是PyTorch中用于构建神经网络的模块,它包含了一系列用于构建神经网络层的类和函数。
from torch import nn

class CLD(nn.Module): # 定义了CLD的类,继承nn.Module.。CLD类代表简单的自定义层,实现全连接层。
    def __init__(self,in_n,out_n):
        super().__init__() # 初始化权重参数
        self.w = nn.Parameter(torch.normal(0, 0.01, size=[in_n, out_n]), requires_grad=True)# 权重参数w是一个[in_n, out_n]的二维张量,是一个付出(0,0.01的正太分布)
        self.b = nn.Parameter(torch.normal(0, 0.01, size=[out_n]), requires_grad=True)
        def forward(self, in_n, out_n):
            super().__init__()
            x = torch.matual(inputs, self.w)
            x= x + b
            return x
            layer = CLD(2, 3)
            y = layer(torch.ones(100, 2))
            loss = torch.sum(y)
            loss.backward()
            for i in layer.parameters():
                print(i.grad)

  • 5
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值