python
复制代码
import numpy as np
import paddle
import paddle.nn as nn
seed=1
paddle.seed(seed)
data = [[-0.5, 7.7], [1.8, 98.5], [0.9, 57.8], [0.4, 39.2], [-1.4, -15.7], [-1.4, -37.3], [-1.8, -49.1], [1.5, 75.6], [0.4, 34.0], [0.8, 62.3]]
data=np.array(data)
x_data=data[:,0]
y_data=data[:,1]
x_train=paddle.to_tensor(x_data,dtype=paddle.float32)
y_train=paddle.to_tensor(y_data,dtype=paddle.float32)
class LinearModel(nn.Layer):
def __init__(self):
super(LinearModel,self).__init__()
self.linear=nn.Linear(1,1)
def forward(self,x):
x=self.linear(x)
return x
model=LinearModel()
criterion=paddle.nn.MSELoss()
optimizer=paddle.optimizer.SGD(learning_rate=0.01, parameters=model.parameters())
epochs=500
final_checkpoint={}
for epoch in range(1,epochs+1):
y_prd=model(x_train.unsqueeze(1))
loss=criterion(y_prd.squeeze(1),y_train)
optimizer.clear_grad()
loss.backward()
optimizer.step()
if epoch % 10==0 or epoch==1:
print(f"epoch:{epoch},loss:{float(loss)}")
if epoch==epochs:
final_checkpoint['epoch']=epoch
final_checkpoint['loss']=loss
paddle.save(model.state_dict(),'./基础API/model.params')
model.load_dict(paddle.load('./基础API/model.params'))
model.eval()
x_test=paddle.to_tensor([[1.8]],dtype=paddle.float32)
y_test=model(x_test)
print(f'y_test:{y_test}')