
目的:通过多次迭代,找到最符合的w和b使得与特征值通过计算来求得最接近标签的值
1. 构造特征值(1000,2),标签(1000,1)
example_num=1000;
input_num=2;
batch_size=10;
features=nd.random.normal(scale=1,shape=(example_num,input_num));
true_w=[1.2,2.1];
true_b=0;-----> 偏差参数默认为0
labels=nd.dot(features,nd.array(true_w).T)+true_b;
2. 开始机器预测 权重w 和偏差b
每次10条随机的特征值和标签(data_iter1可以迭代)
from mxnet.gluon import data as gdata;
dataset=gdata.ArrayDataset(feature,labels);
data_iter1=gdata.DataLoader(dataset,batch_size,shuffle=True);
from mxnet.gluon import nn,loss as gloss;
from mxnet import init,gluon;
net=nn.Sequential();
net.add(nn.Dense(1));
net.initialize(init.Normal(sigma=0.01));
loss=gloss.L2Loss();
trainer=gluon.Trainer(net.collect_params(),'sgd',{'learning_rate':0.03})
num_epochs=3;
for epoch in range(num_epochs):
for X,y in data_iter1:
with autograd.record():
l=loss(net(X),y);
l.backward();
trainer.step(batch_size);
l=loss(net(features),labels);
print('epoch %d,loss: %f'%(epoch+1,l.mean().asnumpy()))
获取学到的权重(weight)和偏差(bias)
dense=net[0];
true_w,dense.weight.data();
true_b,dense.bias.data();
