学习资料参考李沐gluon讲义。
mxnet,gluon构建网络的区别体现在4方面。下面以简单的drop out为例一一对比说明。
0 构建dropout
ndarray:
def dropout(X, drop_prob):
assert 0 <= drop_prob <= 1
keep_prob = 1 - drop_prob
# 这种情况下把全部元素都丢弃。
if keep_prob == 0:
return X.zeros_like()
mask = nd.random.uniform(0, 1, X.shape) < keep_prob
return mask * X / keep_prob
gluon:
from mxnet import nn
drop_prob = 0.2
nn.Dropout(drop_prob)
1 构建网络
ndarray:
input dim要定义(i.e. num_inputs), net的dim在param里定义,net列出包含activation functions的linear计算表达式即可
num_inputs, num_outputs, num_hiddens1, num_hiddens2 = 784, 10, 256, 256
def net(X):
X = X.reshape((-1, num_inputs