gpt4 book ai didi

mxnet - 如何显式使用矩阵和矩阵运算在 MXNet 中构建模型?

转载 作者:行者123 更新时间:2023-12-04 02:20:31 25 4
gpt4 key购买 nike

我可以使用诸如 FullyConnected 之类的预构建高级函数来创建模型。 .例如:

X = mx.sym.Variable('data')
P = mx.sym.FullyConnected(data = X, name = 'fc1', num_hidden = 2)

这样我就得到了一个符号变量 P这取决于符号变量 X .换句话说,我有计算图,可用于定义模型并执行诸如 fit 之类的操作。和 predict .

现在,我想表达 P通过 X以不同的方式。更详细地说,我想指定 FullyConnected 之间的关系,而不是使用高级功能(如 P )。和 X “明确地”,使用低级张量运算(如矩阵乘法)和表示模型参数的符号变量(湖泊权重矩阵)。

例如,为了实现与上述相同的效果,我尝试了以下方法:
W = mx.sym.Variable('W')
B = mx.sym.Variable('B')
P = mx.sym.broadcast_plus(mx.sym.dot(X, W), B)

然而, P以这种方式获得并不等同于 P较早获得。我不能以同样的方式使用它。特别是,据我所知,MXNet 提示 WB没有值(value)(这是有道理的)。

我也尝试声明 WB以另一种方式(以便它们确实具有值(value)):
w = np.array([[1.0, 2.0], [3.0, 4.0], [5.0, 6.0]])
b = np.array([7.0, 8.0])

W = mx.nd.array(w)
B = mx.nd.array(b)

它也不起作用。我猜 MXNet 提示是因为它需要一个符号变量,但它却得到了 nd-arrays。

所以,我的问题是如何使用低级张量运算(如矩阵乘法)和表示模型参数的显式对象(如权重矩阵)来构建模型。

最佳答案

您可能想看看 Gluon API。例如,这里是从头开始构建 MLP 的指南,包括分配参数:

#######################
# Allocate parameters for the first hidden layer
#######################
W1 = nd.random_normal(shape=(num_inputs, num_hidden), scale=weight_scale, ctx=model_ctx)
b1 = nd.random_normal(shape=num_hidden, scale=weight_scale, ctx=model_ctx)

params = [W1, b1, ...]

将它们附加到自动渐变
for param in params:
param.attach_grad()

定义模型:
def net(X):
#######################
# Compute the first hidden layer
#######################
h1_linear = nd.dot(X, W1) + b1
...

并执行它
epochs = 10
learning_rate = .001
smoothing_constant = .01

for e in range(epochs):
...
for i, (data, label) in enumerate(train_data):
data = data.as_in_context(model_ctx).reshape((-1, 784))
label = label.as_in_context(model_ctx)
...
with autograd.record():
output = net(data)
loss = softmax_cross_entropy(output, label_one_hot)
loss.backward()
SGD(params, learning_rate)

你可以在直接的涂料中看到完整的例子:

http://gluon.mxnet.io/chapter03_deep-neural-networks/mlp-scratch.html

关于mxnet - 如何显式使用矩阵和矩阵运算在 MXNet 中构建模型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47672253/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com