Pytorch对训练参数进行扰动,得到新的参数

一、需求

        给定模型中的训练参数x,我们对其进行扰动,得到x'=x+\xi,且\xi服从正态分布或者其他分布(下面假设\xi服从正态分布)。需求是想要把x'变成新的参数,并用于模型训练。

二、实现

        代码

import torch
import torch.nn as nn

# 参数信息
n_node = 3
dim = 5
# 训练参数x
x = nn.Parameter(torch.tensor([[0.1, 0.1, 0.1, 0.1, 0.1], [0.2, 0.2, 0.2, 0.2, 0.2], [0.5, 0.5, 0.5, 0.5, 0.5]]))
# 输出参数x
print(x)

# 扰动ksi(扰动服从均值为0,方差1的正态分布)
ksi = torch.zeros(n_node, dim)
nn.init.normal_(tensor=ksi, mean=0.0, std=1.0)
print(ksi)

# 得到扰动后的x'
x_ = nn.Parameter(x + ksi)
print(x_)

三、效果(程序执行一次的输出结果)

Parameter containing:
tensor([[0.1000, 0.1000, 0.1000, 0.1000, 0.1000],
        [0.2000, 0.2000, 0.2000, 0.2000, 0.2000],
        [0.5000, 0.5000, 0.5000, 0.5000, 0.5000]], requires_grad=True)
tensor([[ 2.0497,  0.9443,  0.2037, -0.2141,  1.5716],
        [-1.7983,  0.6927, -1.0899, -1.8570, -0.7935],
        [ 2.4235, -0.5348,  0.0111, -1.1543, -0.2008]])
Parameter containing:
tensor([[ 2.1497,  1.0443,  0.3037, -0.1141,  1.6716],
        [-1.5983,  0.8927, -0.8899, -1.6570, -0.5935],
        [ 2.9235, -0.0348,  0.5111, -0.6543,  0.2992]], requires_grad=True)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

飞机火车巴雷特

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值