Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Mxnet元素级乘法_Python_Mxnet - Fatal编程技术网

Python Mxnet元素级乘法

Python Mxnet元素级乘法,python,mxnet,Python,Mxnet,在MXNet中,如果我想创建一个权重向量,将每个输入相乘,即使用w*x_I,然后在权重上反向投影w,我该怎么做 我试过: y_hat = input w1 = mx.sym.Variable("w1") y_hat = mx.symbol.broadcast_mul(w1, y_hat) 您可以根据点积进行计算: x = mx.nd.array([[1, 2, 3], [4, 5, 6]]) w = mx.nd.array([2,2,2]) mx.nd.dot(w, x.T) 将导致[

在MXNet中,如果我想创建一个权重向量,将每个输入相乘,即使用
w*x_I
,然后在权重上反向投影
w
,我该怎么做

我试过:

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

您可以根据点积进行计算:

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
,计算输出和目标输出之间的损失,然后反向传播。您可以使用新的
glion
接口来实现该功能()

具体来说,让我们看一个经过改编和

准备数据

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()

不要忘记在向后传球时计算的梯度。渐变将在
w.grad
中提供。在循环中运行训练代码和权重更新,因为单个更新可能不足以实现收敛。

提供一些输入并显示/询问您想要的预期输出,例如
x=[[1,2,3],[4,5,6]]
y=[12,30]
,我想有一个参数
w
,我可以训练它,这样
y=w*x
,所以如果
w=2
,那么
w*x=[[2,4,6],[8,10,12]
向量
w#size=(num#u特征,1)
x
中样本的每个特征的元素相乘,有具体的例子吗?我认为你必须初始化(我认为它叫做bind,一些梯度参数,任何你想反向支持的参数)。。它如何知道要对哪个变量进行backprop呢?如果使用符号API,确实需要这样做。符号API的优点是速度更快。然而,我上面提到的新引入的胶子API更容易开发,所以我建议您首先在那里实现您的想法。我正在编辑上面的文章,以便为示例添加更多信息。我的大型代码库中没有任何胶子依赖项。胶子与MXNet一起玩吗?我只想添加一个参数,因此使所有代码库复杂化可能太多了。更不用说,速度对我来说已经是个问题了。。奇怪的是,我该如何在类符号API中做到这一点呢?Gluon是mxnet的一部分(尽管只在主分支中,直到下一个版本发布)。对于符号API,您可以采用相同的方法,只需使用mx.sym.dot而不是mx.nd.dot,并为x、y和w定义变量。要获得相对于w的梯度,需要使用模块的get_input_grads(),因为w被视为“输入数据”。或者,要让mxnet管理w作为权重数组,您需要定义自己的操作符。不过,根据您的代码库,将命令式/gluon API与现有代码库混合可能是最简单的方法。这没有问题。有没有将w定义为运算符的示例?不管怎样,这似乎都很复杂