pytorch/torch/csrc/autograd/functions/utils.cpp
Adam Paszke 702a2e3bc5 Make Variables not subclass Function anymore
Because of this Variables can no longer appear in the graph.
Every usage of a leaf Variable will leave an AccumulateGrad
function that has no outputs, but modifies var.grad as a side
effect.
2017-05-01 16:44:56 -04:00

24 lines
659 B
C++

#include "torch/csrc/autograd/functions/utils.h"
namespace torch { namespace autograd {
variable_list wrap_outputs(const variable_list& inputs, tensor_list&& outputs,
function_constructor ctr) {
auto flags = Function::flags(inputs);
variable_list result;
result.reserve(outputs.size());
if (flags.is_volatile) {
for (auto& output : outputs) {
result.emplace_back(Variable::of(std::move(output), true));
}
} else {
auto grad_fn = ctr(std::move(flags));
for (auto& output : outputs) {
result.emplace_back(std::make_shared<Variable>(std::move(output), grad_fn));
}
}
return result;
}
}}