Mxnet元素明智地倍增

时间:2017-08-07 06:49:59

标签: python mxnet

在MXNet中,如果我想创建一个权重向量,该权重向量乘以每个输入,即拥有w*x_i,然后在权重w上反推,我将如何做到这一点?

我试过了:

 y_hat = input
 w1 = mx.sym.Variable("w1")
 y_hat = mx.symbol.broadcast_mul(w1, y_hat)

1 个答案:

答案 0 :(得分:3)

您可以使用点积生成计算:

x = mx.nd.array([[1, 2, 3], [4, 5, 6]])
w = mx.nd.array([2,2,2])
mx.nd.dot(w, x.T)

将按照您的意愿生成[12. 30.]。

现在只需随机初始化w,计算输出和目标输出之间的损失,然后再传播。您可以使用新的gluon界面(http://gluon.mxnet.io/)。

具体来说,让我们看一下适应http://mxnet.io/tutorials/gluon/gluon.htmlhttp://gluon.mxnet.io/P01-C05-autograd.html的最小例子

准备数据

label = mx.nd.array([12,30])
x = mx.nd.array([[1, 2, 3], [4, 5, 6]])
w = random weights
w.attach_grad()

并训练

with autograd.record():
    output = mx.nd.dot(w, x.T)
    loss = gluon.loss.L2Loss(output, label)
    loss.backward()

请勿忘记updating the weights使用您在向后传球中计算的渐变。渐变将在w.grad中提供。在循环中运行训练代码和权重更新,因为单个更新可能不足以实现收敛。