【发布时间】:2018-03-22 13:57:34
【问题描述】:
我尝试学习如何在 mxnet 中使用自定义损失函数。
Bellow 是线性回归的最小(非)工作示例。 当我设置'use_custom = False'时,一切正常,而不是自定义损失不起作用。我做错了什么?
import mxnet as mx
import logging
logging.basicConfig(level='DEBUG')
use_custom = False
mx.random.seed(1)
A = mx.nd.random.uniform(-1, 1, (5, 1))
B = mx.nd.random.uniform(-1, 1)
X = mx.nd.random.uniform(-1, 1, (100, 5))
y = mx.nd.dot(X, A) + B
iter = mx.io.NDArrayIter(data=X, label=y, data_name='data', label_name='label', batch_size=20, shuffle=True)
data = mx.sym.Variable('data')
label = mx.sym.Variable('label')
net = mx.sym.FullyConnected(data, num_hidden=1)
if use_custom:
net = mx.sym.MakeLoss(mx.sym.square(net - label))
else:
net = mx.sym.LinearRegressionOutput(net, label=label)
mod = mx.mod.Module(net, label_names=('label',))
mod.fit(iter, num_epoch=50, eval_metric='mse', optimizer='adam')
【问题讨论】:
标签: mxnet