当前位置: 首页 > news >正文

【深度学习】PyTorch深度学习笔记02-线性模型

1. 监督学习

2. 数据集的划分

3. 平均平方误差MSE

4. 线性模型Linear Model - y = x * w

用穷举法确定线性模型的参数

import numpy as np
import matplotlib.pyplot as pltx_data = [1.0, 2.0, 3.0]
y_data = [2.0, 4.0, 6.0]def forward(x):return x * wdef loss(x, y):y_pred = forward(x)return (y_pred - y) * (y_pred - y)w_list = []
mse_list = []for w in np.arange(0.0, 4.0, 0.1):print('w=', w)l_sum = 0for x_val, y_val in zip(x_data, y_data):  y_pred_val = forward(x_val)loss_val = loss(x_val, y_val)  l_sum += loss_valprint('\t', x_val, y_val, y_pred_val, loss_val)print('MSE=', l_sum / len(x_data))  w_list.append(w)mse_list.append(l_sum / len(x_data))plt.plot(w_list, mse_list)
plt.ylabel('Loss')
plt.xlabel('w')
plt.show()

详细过程

    本课程的主要任务是构建一个完整的线性模型:
        导入numpy和matplotlib库;
        导入数据 x_data 和 y_data;
        定义前向传播函数:
            forward:输出是预测值y_hat
        定义损失函数:
            loss:平方误差
        创建两个空列表,后面绘图的时候要用:
            分别是横轴的w_list和纵轴的mse_list
        开始计算(这里没有训练的概念,只是单纯的计算每一个数据对应的预测值,然后让预测值跟真实y值求MSE):
            外层循环:
                在0.0~4.0之间均匀取点,步长0.1,作为n个横坐标自变量,用w表示;
            内层循环:核心计算内容
                从数据集中,按数据对取出自变量x_val和真实值y_val;
                先调用forward函数,计算y的预测值 w*x
                调用loss函数,计算单个数据的平方误差;
                累加损失;
                打印想要看到的数值;
                在外层循环中,把计算的结果放进之前的空列表,用于绘图;
    在获得了打印所需的数据列表之后,模式化地打印图像:

运行结果

ps:

visdom库可用于可视化

np.meshgrid()可用于绘制三维图

5. 线性模型Linear Model - y = x * w + b

有w,b两个参数,穷举最小值

import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3Dx_data = [1.0, 2.0, 3.0]
y_data = [3.0, 4.0, 6.0]def forward(x, w, b):return x * w + bdef loss(x, y, w, b):y_pred = forward(x, w, b)loss = (y_pred - y) * (y_pred - y)return lossw_list = np.arange(0.0, 4.1, 0.1)
b_list = np.arange(-2.0, 2.1, 0.1)# np.zeros(): 返回给定维度的全零数组; mse_matrix用于存储不同 w,b 组合下的均方误差损失
mse_matrix = np.zeros((len(w_list), len(b_list)))for i, w in enumerate(w_list):for j, b in enumerate(b_list):l_sum = 0for x_val, y_val in zip(x_data, y_data):l_sum += loss(x_val, y_val, w, b)mse_matrix[i, j] = l_sum / len(x_data)W, B = np.meshgrid(w_list, b_list)
fig = plt.figure('Linear Model Cost Value')
ax = fig.add_subplot(111, projection='3d')
ax.plot_surface(W, B, mse_matrix.T, cmap='viridis')
ax.set_xlabel('w')
ax.set_ylabel('b')
ax.set_zlabel('loss')
plt.show()

可以得出,穷举法算法的时间复杂度 随着参数的个数增大 而变得很大,因此使用穷举法找到最优解,很不合理。

http://www.lryc.cn/news/399680.html

相关文章:

  • 10.FreeRTOS_互斥量
  • EtherCAT总线冗余让制造更安全更可靠更智能
  • Android IdleHandler源码分析
  • Mac安装stable diffusion 工具
  • CVE-2024-6387Open SSH漏洞彻底解决举措(含踩坑内容)
  • python的简单爬取
  • 【WEB前端2024】3D智体编程:乔布斯3D纪念馆-第60集-agent训练资讯APP重点推荐AI资讯内容(含视频)
  • 【学术会议征稿】第三届智能电网与能源系统国际学术会议
  • 01. 课程简介
  • iOS热门面试题(三)
  • ECS中postTransform.Value = float4x4.Scale(1, math.sin(elapsedTime), 1)
  • VLM技术介绍
  • x264 编码器 AArch64 汇编函数模块关系分析
  • windows10开启防火墙,增加入站规则后不生效,还是不能访问后端程序
  • academic-homepage:快速搭建个人学术主页,页面内容包括个人简介、教育经历、发布过的学术列表等,同时页面布局兼容移动端。
  • .env.development、.env.production、.env.staging
  • 国密证书(gmssl)在Kylin Server V10下安装
  • 【数据服务篇】法律快车问答数据:为法律智能化铺就道路
  • 各向异性含水层中地下水三维流基本微分方程的推导(二)
  • 2024 微信小程序 学习笔记 第一天
  • PCIe驱动开发(3)— 驱动设备文件的创建与操作
  • 【Redis】简单了解Redis中常用的命令与数据结构
  • IDEA启动Web项目总是提示端口占用
  • JRT打印鉴定记录单
  • 数据处理-Matplotlib 绘图展示
  • Nginx -Web服务器/反向代理/负载均衡
  • 机器人三定律及伦理分析
  • 自动驾驶算法———车道检测(一)
  • 小程序自学教程
  • How do I format markdown chatgpt response in tkinter frame python?