一、绪论
项目 | 内容 |
---|---|
这个作业属于哪个课程 | [人工智能](https://edu.cnblogs.com/campus/buaa/BUAA-AI-2019) |
这个作业的要求在哪里 | [作业要求](https://edu.cnblogs.com/campus/buaa/BUAA-AI-2019/homework/2787) |
我在这个课程的目标是 | 学习了解应用人工智能 |
这个作业在哪个具体方面帮助我实现目标 | 学习Mini Batch梯度下降方法 |
二、代码实现
import numpy as np
import matplotlib.pyplot as plt
from pathlib import Path
x_data_name = "TemperatureControlXData.dat"
y_data_name = "TemperatureControlYData.dat"
Xfile = Path(x_data_name)
Yfile = Path(y_data_name)
if Xfile.exists() & Yfile.exists():
X = np.load(Xfile)
Y = np.load(Yfile)
X = X.reshape(1,-1)
Y = Y.reshape(1,-1)
size=100
def function(batch_size):
x=np.array(range(0,200))
Loss=np.size(Epoch)
w = np.random.normal()
b = np.random.normal()
for i in range(size):
j = np.random.choice(a, batch_size)
x = X[j]
y = Y[j]
value = w * x + b
dw = ((value - y) * x / batch_size).sum()
db = ((value - y) / batch_size).sum()
w = w - dw
b = b - db
loss = ((value - y) * (value - y) / batch_size / 2).sum()
Loss[i] = loss
return Loss
plt.figure()
x = np.linspace(0,100,100)
plt.xlabel("x")
plt.ylabel("Loss")
Loss5 = function(5)
Loss10 = function(10)
Loss15 = function(15)
plt.plot(x, Loss5, label="batch_size=5")
plt.plot(x, Loss10, label="batch_size=10")
plt.plot(x, Loss15, label="batch_size=15")
plt.legend(loc='upper right')
plt.show()
三、问题
问题二:因为w和b的影响权重实时发生变化,当对于实际数据进行特定调整状态下,可以变成一个圆
问题三:我们对于w和b的取值是离散的,因此无法完美的到一个值,而是只能通过无限逼近的方式锁定一个范围。