《PyTorch深度学习实践》第2讲

本文介绍了如何利用matplotlib的Axes3D模块结合numpy.meshgrid函数,通过预测函数和损失函数,创建3D曲面图来展示权重w和偏置b对损失值的影响。通过实例展示了如何计算并绘制MSE(均方误差)在不同参数组合下的变化。
摘要由CSDN通过智能技术生成

知识点

  1. 使用matplotlib进行3D曲面绘图
  2. numpy.meshgrid函数

使用matplotlib进行3D曲面绘图

matplotlib包本身不具有绘制3D图形功能,需要借助它依赖的Axes3D工具实现绘制3D图形

同时需要注意,plot_surface函数接收的数据参数都是numpy.ndarray类型。

numpy.meshgrid函数

numpy.meshgrid函数的功能是对两个向量进行扩展,扩展成为一个n*n的矩阵

作业代码

import numpy as np
from matplotlib import pyplot as plt
from mpl_toolkits.mplot3d import Axes3D

xData = [1.0, 2.0, 3.0]
yData = [2.0, 4.0, 6.0]

# predict function
def predict(x : float, w : np.ndarray, b : np.ndarray) -> np.ndarray:
    return x * w + b

# loss function
def loss(predictY : np.ndarray, realY : float) -> float:
    return (predictY - realY) ** 2

wList = np.arange(0.0, 4.1, 0.1)
bList = np.arange(-2.0, 2.0, 0.1)
w, b = np.meshgrid(wList, bList)
mse = np.zeros(w.shape)

# enum w and b to predict
for x, y in zip(xData, yData):
    predictY = predict(x, w, b)
    mse += loss(predictY, y)

mse /= len(xData)

# draw
# add axes
fig = plt.figure()
ax = Axes3D(fig)

# After matplotlib 3.4, Axes3D will need to be explicitly added to the figure
fig.add_axes(ax)
plt.xlabel(r'w', fontsize=20, color='cyan')
plt.ylabel(r'b', fontsize=20, color='cyan')
ax.plot_surface(w, b, mse, rstride = 1, cstride = 1, cmap = 'rainbow')
plt.show()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值