Pytorch深度学习实践笔记2

news2024/11/18 1:47:37

🎬个人简介:一个全栈工程师的升级之路!
📋个人专栏:pytorch深度学习
🎀CSDN主页 发狂的小花
🌄人生秘诀:学习的本质就是极致重复!

《PyTorch深度学习实践》完结合集_哔哩哔哩_bilibili​

目录

1 深度学习

2 Linear Model

3 代码


1 深度学习


监督学习(supervised learning):打标签的数据
无监督学习:无标注数据,模型自己去学习数据的特征,输出参数,然后推理输出


2 Linear Model


线性模型:线性回归
(1)给定x为学习时间,y为最终输出的绩点,这些训练数据
利用数据建立模型、前向传播、建立loss,求的loss在满足精度下的线性模型的参数weights,bias,然后将待推理的数据带入模型中,得到推理结果


(2)数据集

  • 训练集(Training Set):训练模型
    • 训练集使用多次
    • 确定模型权重(weights)、偏置(bias)等学习参数
    • 训练出模型
  • 验证集(Validation Set):验证模型性能,手动调参多次可能只代表一部分非训练集,导致模型泛化能力不够
    • 验证集使用多次
    • 调整并选择模型参数和超参数
    • 选择模型(验证模型性能)
  • 测试集(Test Set):评估模型性能的数据集
    • 不参与学习参数过程、也不参与超参数选择过程
    • 测试集仅使用一次,完全独立、测试集未参与过训练或者验证
    • 评价最终的模型
  • 交叉验证
    • 将数据集单纯划分为训练集、验证集和测试集时,并不是所有数据都参与了训练,存在数据信息利用不全的弊端,由于验证集只代表一部分非训练数据集,导致最终训练好的模型测试时的泛化能力并不好,所以为了保证泛化误差的稳定性,得到理想的模型,可以使用交叉验证
    • K折验证法

1.将数据集分为训练集和测试集,测试集放在一边。

2.将训练集分为 k 份,每次使用 k 份中的1 份作为验证集,其他全部作为训练集。

3.通过 k 次训练后,得到了 k 个不同的模型。

4.评估 k 个模型的效果,从中挑选效果最好的超参数。

5.使用最优的超参数,然后将 k 份数据全部作为训练集重新训练模型,得到最终所需模型,最后再到测试集上测试。

    • 参数和超参数
      • 模型参数: 参数属于模型内部的配置变量,它们通常在建模过程自动学习得出。如:线性回归或逻辑回归中的系数、支持向量机中的支持向量、神经网络中的权重、偏置
      • 超参数属于模型外部的配置变量,他们通常由研究员根据自身建模经验手动设定。如学习速率,迭代次数,层数、K近邻中的K值

训练集、验证集和测试集_训练集 测试集 验证集-CSDN博客​



(3)Linear Model(Linear Regression)
 


(4)Linear Regression 步骤

  • 数据集准备:训练集、测试集、验证集
  • 建立模型:简单的线性模型、做前向传播,求出预测值
  • 计算损失函数(loss):平方差

  • 计算代价函数:MSE,均方差Mean Square Error

  • 损失loss和 模型参数的关系图(这里只有w)

3 代码

import numpy as np
import matplotlib.pyplot as plt

# y = 2 * x ,dataset
x_data = [1.0, 2.0, 3.0]
y_data = [2.0, 4.0, 6.0]
 
 
# model y = x * w,w is weight
def forward(x,w):
    return x*w
 
# loss
def loss(x, y,w):
    y_pred = forward(x,w)
    return (y_pred - y)**2
 
 
# 穷举法
w_list = []
mse_list = []

# iteration times
iteration = 0
# mean square error
MSE = -1
for w in np.arange(0.0, 4.1, 0.1):
    iteration = iteration+1
    print("w=", w)
    l_sum = 0
    for x_val, y_val in zip(x_data, y_data):
        # model to train
        y_pred_val = forward(x_val,w)
        loss_val = loss(x_val, y_val,w)
        l_sum += loss_val
        print('\t', x_val, y_val, y_pred_val, loss_val)
    MSE = l_sum/3
    print('MSE=', MSE)
    w_list.append(w)
    mse_list.append(MSE)
    if (MSE < 1e-5):
        print('iteration: ',iteration,'loss: ',MSE,'weight:',w)
        break
    
plt.plot(w_list,mse_list)
plt.ylabel('Loss')
plt.xlabel('w')
# plt.show() 
plt.savefig('./data/loss_w.png')   


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

# 这里设函数为y=3x+5
x_data = np.array([1.0, 2.0, 3.0])
y_data = np.array([8.0, 11.0, 14.0])

def forward(x, w, b):
    return x * w + b

def loss(x, y, w, b):
    y_pred = forward(x, w, b)
    return (y_pred - y) ** 2

W = np.arange(0.0, 5.1, 0.1)
B = np.arange(0.0, 5.1, 0.1)
w, b = np.meshgrid(W, B)

MSE = -1
iteration = 0
loss_values = np.zeros_like(w)

for i in range(len(W)):
    for j in range(len(B)):
        iteration = iteration +1
        l_sum = 0
        for x_val, y_val in zip(x_data, y_data):
            loss_val = loss(x_val, y_val, W[i], B[j])
            l_sum += loss_val
            loss_values[i, j] = l_sum / 3
        MSE = l_sum / 3
        if (MSE < 1e-5):
            print('iteration: ',iteration,'loss: ',MSE,'weight:',W[i],'b: ',B[j])
            # break
                
                

fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.plot_surface(w, b, loss_values, cmap='viridis')

ax.set_xlabel('w')
ax.set_ylabel('b')
ax.set_zlabel('Loss')

plt.show()
plt.savefig('./data/loss_w_b.png')

🌈我的分享也就到此结束啦🌈
如果我的分享也能对你有帮助,那就太好了!
若有不足,还请大家多多指正,我们一起学习交流!
📢未来的富豪们:点赞👍→收藏⭐→关注🔍,如果能评论下就太惊喜了!
感谢大家的观看和支持!最后,☺祝愿大家每天有钱赚!!!欢迎关注、关注!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1687812.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

正则表达式(知识总结篇)

本篇文章主要是针对初学者&#xff0c;对正则表达式的理解、作用和应用 正则表达式&#x1f31f; 一、&#x1f349;正则表达式的概述二、&#x1f349;正则表达式的语法和使用三、 &#x1f349;正则表达式的常用操作符四、&#x1f349;re库主要功能函数 一、&#x1f349;正…

【设计模式】JAVA Design Patterns——Balking(止步模式)

&#x1f50d;目的 止步模式用于防止对象在不完整或不合适的状态下执行某些代码。 &#x1f50d;解释 真实世界例子 洗衣机中有一个开始按钮&#xff0c;用于启动衣物洗涤。当洗衣机处于非活动状态时&#xff0c;按钮将按预期工作&#xff0c;但是如果已经在洗涤&#xff0c;则…

从零到一:手把手教你将项目部署上线-环境准备

部署步骤 引言1.Java环境配置2.ngnix安装好书推荐 引言 将自己的项目从本地开发环境顺利部署上线&#xff0c;是每个开发者必经的里程碑。今天&#xff0c;我们就从零开始&#xff0c;一步一步教你如何将手中的项目部署到线上&#xff0c;让全世界见证你的创造力。 首先&#x…

3D 高斯泼溅(Gaussian Splatting)-3D重建的3DGS时代

3D重建自从NeRfs出现之后又热闹了一次&#xff0c;3D GS技术一时间燃变了整个三维重建和Slam领域&#xff0c;几个月不见&#xff0c;沧海桑田。 NeRF貌似已成为过去式&#xff0c;三维重建进入了3DGS时代&#xff0c;且3DGS在各方面比NeRF落地更快。3D 高斯泼溅&#xff08;S…

Payload SDK dji

开发硬件 感谢您的耐心等待&#xff0c;建议您可以考虑下树莓派4B或Jetson Nano开发板&#xff0c;看您需求选择&#xff0c;OSDK即将停止服务&#xff0c;我们建议您使用PSDK来进行开发&#xff0c;PSDK包含了OSDK的功能。Payload SDK 感谢您对大疆产品的支持&#xff01;祝…

DOS学习-目录与文件应用操作经典案例-type

新书上架~&#x1f447;全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我&#x1f446;&#xff0c;收藏下次不迷路┗|&#xff40;O′|┛ 嗷~~ 目录 一.前言 二.使用 三.案例 1. 查看文本文件内容 2. 同时查看多个文本文件内容 3. 合并文…

获取日期区间的所有日期

借助moment.js 转换指定格式&#xff0c;首先安装npm install moment --save methods:{enumerateDaysBetweenDates(startDate, endDate) { // 假定你已经保证了startDate 小于endDate&#xff0c;且二者不相等let daysList [];let SDate this.$moment(startDate);let EDate …

CentOS7安装内网穿透实现远程推送镜像到本地Docker Registry

文章目录 前言1. 部署Docker Registry2. 本地测试推送镜像3. Linux 安装cpolar4. 配置Docker Registry公网访问地址5. 公网远程推送Docker Registry6. 固定Docker Registry公网地址 前言 本文主要介绍如何部署Docker Registry 本地镜像仓库,简单几步结合cpolar内网穿透工具实现…

顶顶通实时质检系统-黑名单拦截功能配置流程

文章目录 前言联系我们配置流程一、黑名单导入二、白名单导入三、外部黑名单四、靓号规则五、创建拦截规则六、拦截条件七、功能配置 拦截记录与统计拦截记录拦截统计 前言 上篇文章讲解了顶顶通实时质检系统黑名单的功能介绍&#xff0c;本篇文章主要讲解顶顶通黑名单拦截功能…

C++入门:从C语言到C++的过渡(1)

目录 1.什么是C 2.C的标准库 3.命名空间 3.1为什么要存在命名空间 3.2命名空间的定义 3.3命名空间的使用 3.3.1域作用限定符 3.3.2using关键字引入某个成员 3.3.3using关键字引入命名空间名称 3.4命名空间的嵌套 3.5命名空间的合并 4.C中的输入与输出 1.什么是C C&am…

Ansible自动化运维中的file文件模块模块应用详解

作者主页&#xff1a;点击&#xff01; Ansible专栏&#xff1a;点击&#xff01; 创作时间&#xff1a;2024年5月21日15点21分 &#x1f4af;趣站推荐&#x1f4af; 前些天发现了一个巨牛的&#x1f916;人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xf…

jmeter线程组(下篇)

线程组 线程组作为JMeter测试计划的核心组件之一&#xff0c;对于模拟并发用户的行为至关重要。线程组元件是整个测试计划的入口&#xff0c;所有的取样器和控制器必须放置在线程组下。 可以将线程组视为一个虚拟用户池&#xff0c;其中每个线程可被理解为一个虚拟用户&#x…

记录一次IDEA升级版本导致Lombok注解失效问题

IDEA升级导致Lombok注解失效问题 环境 我本机项目原来的运行环境和软件版本&#xff1a; IDEA 2021JDK 1.8Maven 3.5.4springboot 2.2.6.RELEASEspring-cloud Hoxton.SR9 为了体验更好我就把IDEA版本从2021.2升级到了2024.1版本&#xff0c;反正现在是有最新版本我就一直在…

SpringBoot2.0.x旧版集成Swagger UI报错Unable to infer base url...解决办法

一、问题描述 1.1项目背景 SpringBoot2.0.9的旧版项目维护开发&#xff0c;集成Swagger-ui2.9.2无法访问的问题。不用想啊&#xff0c;这种老项目是各种过滤器拦截器的配置&#xff0c;访问不到&#xff0c;肯定是它们在作妖。懂得都懂啊&#xff0c;这里交给大家一个排错的办…

企业防泄密软件有哪些,哪个排名最好

机密数据的泄密对于企业而言&#xff0c;已成为最大的信息安全威胁之一。近年来企业面对的最大威胁来自于内部&#xff0c;以利益为出发点的互联网信息犯罪及案件&#xff0c;在世界各地不断传出&#xff0c;因此&#xff0c;信息保护与管控将逐渐成为企业信息安全重点部署项目…

解决arduino安装stm32duino开发板库时下载慢下载不了的问题

解决arduino安装stm32duino开发板库时下载慢下载不了的问题&#xff0c;安装其他开发板也可以使用类似的方法。 在利用arduino进行stm32开发的时候&#xff0c;需要安装对stm32开发板支持的库&#xff0c;但是正常情况下&#xff0c;由于网络问题&#xff0c;安装的时候容易出…

双边滤波去雾算法

目录 1. 简介 2. 步骤 3. 优点 4. 代码 5. 运行结果 1. 简介 本文介绍了双边滤波图像去雾算法&#xff0c;旨在消除雾霾对图像质量的影响&#xff0c;能够保留边缘信息并去除噪声&#xff0c;有效提高图像的清晰度和对比度。双边滤波&#xff08;Bilateral Filtering&…

【Java】全套云HIS(医院信息管理系统)可对接医保 采用云端SaaS模式部署

【Java】全套云HIS&#xff08;医院信息管理系统&#xff09;可对接医保 采用云端SaaS模式部署 SaaS 模式的云 HIS 更适用于基层医疗机构&#xff0c;而传统的 HIS 已经在大中型医疗机构大规模应用。过去&#xff0c;国内的大中型医疗机构投入了大量的资金来进行信息化系统建设…

esp32(8266)如何在platformio中上传文件到单片机

本来认为这是基础内容&#xff0c;不用我来介绍&#xff0c;结果&#xff0c;在个人的单片机字库开源项目 GitHub - StarCompute/tftziku: 这是一个通过单片机在各种屏幕上显示中文的解决方案 中有两个人问到了&#xff0c;就特别来说明一下&#xff1a; 在platformio中新建一…

指针数组与数组指针的理解

typedef struct vexnode {int key;struct arcnode *next; }vexnode, adjlist[MVNUM]; void init(adjlist *list); void init(adjlist *list) {for(size_t i 0; i < MVNUM; i){list[i].key i;list[i].next NULL;} }上述代码编译的时候没有报错&#xff0c;但是运行的时候&…