小编Mas*_* Hu的帖子

理解 Pytorch 中的渐变

我有一些 Pytorch 代码演示了 Pytorch 中的梯度计算,但我完全困惑计算了什么以及如何使用它。这篇文章演示了它的用法,但就反向传播算法而言,它对我来说没有意义。看看下面示例中 in1 和 in2 的梯度,我意识到 in1 和 in2 的梯度是损失函数的导数,但我的理解是更新还需要考虑实际损失值?损失值用在哪里?我在这里错过了什么吗?

in1 = torch.randn(2,2,requires_grad=True)
in2 = torch.randn(2,2,requires_grad=True)
target = torch.randn(2,2)
l1 = torch.nn.L1Loss()
l2 = torch.nn.MSELoss()
out1 = l1(in1,target)
out2 = l2(in2,target)
out1.backward()
out2.backward()
in1.grad
in2.grad
Run Code Online (Sandbox Code Playgroud)

deep-learning pytorch

3
推荐指数
1
解决办法
1542
查看次数

何时调用构造函数以及如何不调用它们

class A
{
    public:
    A(){std::cout << "hello\n";}
};

class B
{
    A object;
    public:
    B(A aObject){ object = aObject;}
};

int main() {

    A object;
    B bObject(object);

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

当我运行这个程序时,似乎我构造了两次A类,因为在我的控制台上"hello"被打印两次.所以我的问题是我究竟是在为A调用我的构造函数以及如何使它停止所以我只构造一次A,同时仍然将A对象传递给B.

c++ constructor

1
推荐指数
1
解决办法
83
查看次数

标签 统计

c++ ×1

constructor ×1

deep-learning ×1

pytorch ×1