w =1.0# 模型classModel(object):def__init__(self):super(Model, self).__init__()# 前向传播函数defforward(self, x):return x * w
# 损失函数defloss(self, x, y):
y_pred = self.forward(x)returnpow((y_pred - y),2)# 计算梯度函数defgradient(self, x, y):return2* x *(x * w - y)defrun(self):
w =0print('predict (before training)',4, self.forward(4))for epoch inrange(10):for x_val, y_val inzip(x_data, y_data):
grad = self.gradient(x_val, y_val)
w = w -0.01* grad
print('\tgrad:', x_val, y_val,round(grad,2))
l = self.loss(x_val, y_val)print('process:', epoch,'w=',round(w,2),'loss=',round(l,2))print('predict (after training)','4 hours', self.forward(4))if __name__ =="__main__":print("Life is short, You need Python!")
x_data =[1.0,2.0,3.0]
y_data =[2.0,4.0,6.0]
m = Model()
m.run()