线性模型课后作业
函数:
y
=
w
∗
x
+
b
y = w*x + b
y=w∗x+b
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
x_data = np.random.randint(1, 10, size=(10))
bias = np.random.rand(1)
y_data = x_data * 2 + bias
print("x_data=", x_data)
print("y_data=", y_data)
print("b=", bias)
def forward(x):
return x * w + b
def loss(y, y_pred):
return (y_pred - y) * (y_pred - y)
w_list = []
b_list = []
mse_list = np.zeros((51,51), dtype=float)
for i, w in enumerate(np.arange(0.0, 5.1, 0.1)):
for j, b in enumerate(np.arange(-1.0, 1.04, 0.04)):
print(f"w={w}, b={b}")
l_sum = 0
for x_val, y_val in zip(x_data, y_data):
y_pred = forward(x_val)
loss_y = loss(y_val, y_pred)
l_sum += loss_y
print("\t", x_val, y_val, y_pred, loss_y)
mse_list[i][j] = l_sum / 10
if w==0.0:
b_list.append(b)
w_list.append(w)
w_list, b_list = np.meshgrid(w_list, b_list)
mse_list = np.array(mse_list)
print("x_data=", x_data)
print("y_data=", y_data)
print("b=", bias)
fig = plt.figure()
ax = Axes3D(fig)
ax.plot_surface(w_list, b_list, mse_list)
plt.show()