线性回归的简单实现-mxnet
1 #构建数据集 2 from mxnet import autograd, nd #引入自动求导和n维数组 3 4 num_inputs = 2 5 num_examples = 1000 6 true_w = [2, -3.4] 7 true_b = 4.2 8 features = nd.random.normal(scale=1, shape=(num_examples, num_inputs)) 9 labels = true_w[0] * features[:, 0] + true_w[1] * features[:, 1] + true_b 10 labels += nd.random.normal(scale=0.01, shape=labels.shape) 11 12 from mxnet.gluon import data as gdata 13 batch_size=10 14 dataset=gdata.ArrayDataset(features,labels) #将特征和标签组合 15 data_iter=gdata.DataLoader(dataset,batch_size,shuffle=True) #提取子数据集 16 17 from mxnet.gluon import nn 18 net=nn.Sequential() #引入神经网络的实例 19 20 net.add(nn.Dense(1)) #添加一个全连接层 21 22 from mxnet import init #引入初始化模块 23 net.initialize(init.Normal(sigma=0.01)) #将网络参数按正态分布初始化 24 25 from mxnet.gluon import loss as gloss #引入损失函数模块,定义损失为L2范数损失 26 loss=gloss.L2Loss() 27 28 29 from mxnet import gluon #引入gluon模块 30 trainer = gluon.Trainer(net.collect_params(),'sgd',{'learning_rate':0.03}) 31 ##我们创建一个Trainer实例,实例是为了优化net中的参数,参数通过net.collect_params()获取,并指定学习率为0.03,优化算法为小批量随机梯度下降(sgd)算法。该优化算法将用来迭代net实例所有通过add函数嵌套的层所包含的全部参数。## 32 33 net[0].weight.data() #查看第一层的权重 34 net[0].bias.data() #查看第一层的偏置 35 net[0].grad.data()#查看第一层的梯度