gpt4 book ai didi

python - PyTorch:如何编写仅返回权重的神经网络?

转载 作者:行者123 更新时间:2023-12-01 07:15:29 25 4
gpt4 key购买 nike

我正在训练一个学习一些权重的神经网络,并根据这些权重,我计算转换,以结合权重生成预测模型。我的网络无法正确学习,因此我正在编写一个不同的网络,它除了返回独立于输入 x 的权重(在使用 softmax 和转置进行归一化之后)之外什么也不做。这样,我想找出问题是出在网络上,还是出在网络外的变换估计上。但这行不通。这就是我所拥有的。

class DoNothingNet(torch.nn.Module):
def __init__(self, n_vertices=6890, n_joints=14):
super(DoNothingNet, self).__init__()
self.weights = nn.parameter.Parameter(torch.randn(n_vertices, n_joints))

def forward(self, x, indices):
self.weights = F.softmax(self.weights, dim=1)
return self.weights.transpose(0,1)

但是行 self.weights = F.softmax(self.weights, dim=1) 不起作用并产生错误 TypeError: 无法分配 'torch.cuda.FloatTensor ' 作为参数“权重”(torch.nn.Parameter 或预期为 None)。我该如何解决?这段代码有意义吗?

最佳答案

nn.Module 跟踪 nn.Parameter 类型的所有字段以进行训练。在您的代码中,每次前向调用时,您都会尝试通过将参数权重分配给张量类型来更改参数权重,因此会发生错误。

以下代码输出归一化权重而不更改存储的权重。希望这会有所帮助。

import torch
from torch import nn
from torch.nn import functional as F

class DoNothingNet(torch.nn.Module):
def __init__(self, n_vertices=6890, n_joints=14):
super(DoNothingNet, self).__init__()
self.weights = nn.parameter.Parameter(torch.randn(n_vertices, n_joints))

def forward(self, x, indices):
output = F.softmax(self.weights, dim=1)
return output.transpose(0,1)

关于python - PyTorch:如何编写仅返回权重的神经网络?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57995859/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com