馈送可变的alpha(学习率)到ApplyGradientDescent

时间:2019-05-29 21:03:04

标签: c++ tensorflow

这是创建变量,为其创建渐变并使用ApplyGradientDescent创建渐变更新操作的最小示例

auto w = Variable(scope, { 3 }, DT_FLOAT);

std::vector<Output> grad_outputs;
TF_CHECK_OK(AddSymbolicGradients(scope, { loss }, { w }, &grad_outputs));

auto apply_w1 = ApplyGradientDescent(scope, w, Cast(scope, 0.01, DT_FLOAT), { grad_outputs[0] });

但是,我真正想要的是具有可变的学习率,可以从图形外部进行更新,同时避免每次都必须在图形上创建新的梯度运算...这样:

auto ph = Placeholder(scope, DT_FLOAT));
auto var = Variable(scope, {1}, DT_FLOAT));
auto assignVar = Assign(scope, var, ph));

Tensor newLr(DT_FLOAT, TensorShape({1}));
newLr.flat<float>().data()[0] = 0.001;

TF_CHECK_OK(session->Run({{ph, newLr}}, {assignVar}, nullptr));

auto apply = ApplyGradientDescent(scope, w, var, { grad_outputs[0] });

问题是以上操作失败,因为ApplyGradientDescent期望标量为alpha,我不理解。有什么办法解决吗?

0 个答案:

没有答案