均方误差预测酸奶日销量

预测酸奶日销量y, x1, x2是影响日销量的因素。

建模前,应预先采集的数据有:每日x1,x2和销量y_(即已知答案,最佳情况:产量=销量)

拟造数据集X,Y_:y_=x1 + x2    噪声:-0.05~ +0.05     拟合可以预测销量的函数

import tensorflow as tf
import numpy as np

SEED = 23455

rdm = np.random.RandomState(seed=SEED) # 生成[0,1)之间的随机数
x = rdm.rand(32, 2)

# 生成噪声[0,1)/10=[0,0.1); [0,0.1)-0.05=[-0.05,0.05)
y_ = [[x1 + x2 + (rdm.rand() / 10.0 - 0.05)] for (x1, x2) in x]
x = tf.cast(x, dtype=tf.float32)

w1 = tf.Variable(tf.random.normal([2, 1], stddev=1, seed=1))

epoch = 15000
lr = 0.002

for epoch in range(epoch):
with tf.GradientTape() as tape:
y = tf.matmul(x, w1)
loss_mse = tf.reduce_mean(tf.square(y_ - y))   #均方误差

grads = tape.gradient(loss_mse, w1)
w1.assign_sub(lr * grads)

if epoch % 500 == 0:
print("After %d training steps,w1 is " % (epoch))
print(w1.numpy(), "\n")
print("Final w1 is: ", w1.numpy())

———————————————————————————————————————————

每500次训练输出w的结果,最终Final w1 is:  [[1.0009792],[0.9977485]],

预测销量y的结果等于 1.00倍x1 + 1.00倍x2,和y_=x1 + x2 对比,说明预测酸奶日销量的公式拟合正确。


After 0 training steps,w1 is 
[[-0.8096241]
 [ 1.4855157]] 

After 500 training steps,w1 is 
[[-0.21934733]
 [ 1.6984866 ]] 

After 1000 training steps,w1 is 
[[0.08939711]
 [1.673225  ]] 

After 1500 training steps,w1 is 
[[0.28368822]
 [1.5853055 ]] 

After 2000 training steps,w1 is 
[[0.423243 ]
 [1.4906037]] 

After 2500 training steps,w1 is 
[[0.531055 ]
 [1.4053345]] 

After 3000 training steps,w1 is 
[[0.61725086]
 [1.332841  ]] 

After 3500 training steps,w1 is 
[[0.687201 ]
 [1.2725208]] 

After 4000 training steps,w1 is 
[[0.7443262]
 [1.2227542]] 

After 4500 training steps,w1 is 
[[0.7910986]
 [1.1818361]] 

After 5000 training steps,w1 is 
[[0.8294352]
 [1.1482395]] 

After 5500 training steps,w1 is 
[[0.86087203]
 [1.1206709 ]] 

After 6000 training steps,w1 is 
[[0.8866551]
 [1.098054 ]] 

After 6500 training steps,w1 is 
[[0.9078028]
 [1.0795006]] 

After 7000 training steps,w1 is 
[[0.9251489]
 [1.0642821]] 

After 7500 training steps,w1 is 
[[0.9393773]
 [1.0517985]] 

After 8000 training steps,w1 is 
[[0.9510481]
 [1.041559 ]] 

After 8500 training steps,w1 is 
[[0.9606211]
 [1.0331596]] 

After 9000 training steps,w1 is 
[[0.9684734]
 [1.02627  ]] 

After 9500 training steps,w1 is 
[[0.9749144]
 [1.0206192]] 

After 10000 training steps,w1 is 
[[0.98019755]
 [1.0159837 ]] 

After 10500 training steps,w1 is 
[[0.9845312]
 [1.0121814]] 

After 11000 training steps,w1 is 
[[0.9880858]
 [1.0090628]] 

After 11500 training steps,w1 is 
[[0.99100184]
 [1.0065047 ]] 

After 12000 training steps,w1 is 
[[0.9933934]
 [1.0044063]] 

After 12500 training steps,w1 is 
[[0.9953551]
 [1.0026854]] 

After 13000 training steps,w1 is 
[[0.99696386]
 [1.0012728 ]] 

After 13500 training steps,w1 is 
[[0.9982835]
 [1.0001147]] 

After 14000 training steps,w1 is 
[[0.9993659]
 [0.999166 ]] 

After 14500 training steps,w1 is 
[[1.0002553 ]
 [0.99838644]] 

Final w1 is:  [[1.0009792]
 [0.9977485]]

Process finished with exit code 0
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值