使用Mindspore拟合f(x)=a*sin(x)+b这类函数
1、#导入所需的工具包importnumpyasnpfrommindsporeimportdatasetasds熠硒勘唏frommindspore.common.initializerimportNormalfrommindsporeimportnnfrommindspore.trainimportModelfrommindspore.train.callbackimportLossMonitorfrommindsporeimportcontext#确定运行的硬件平台context.set_context(mode=context.GRAPH_MODE,device_target="CPU")
2、#设定要拟合的函数defget_data(num,w=2.0,b=3.0):#f(x)=w*sin(x)+b#f(x)=2*sin(x)+3foriinrange(num):x=np.random.uniform(-np.pi,np.pi)noise=np.random.normal(0,1)y=w*np.sin(x)+b+noiseyieldnp.array([np.sin(x)]).astype(np.float32),np.array([y]).astype(np.float32)
3、#初始化开始的参数classLinearNet(nn.Cell):def__init__(self):super(LinearNet,self).__init__()self.fc=nn.Dense(1,1,Normal(0.02),Normal(0.02))defconstruct(self,x):x=self.f
4、#开始拟合,设定初始化超参数。if__name__=="__main__":nu罪焐芡拂m_data=1600batch_size=16repeat_size=1lr=0.005momentum=0.9net=LinearNet()net_loss=nn.loss.MSELoss()opt=nn.Momentum(net.trainable_params(),lr,momentum)model=Model(net,net_loss,opt)ds_train=create_dataset(num_data,batch_size=batch_size,repeat_size=repeat_size)model.train(1,ds_train,callbacks=LossMonitor(),dataset_sink_mode=False)print(net.trainable_params()[0],"\n%s"%net.trainable_params()[1])
5、热爱深度学习的小伙伴可以尝试一下哦!