IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> PyTorch深度学习实践——线性模型 -> 正文阅读

[人工智能]PyTorch深度学习实践——线性模型

学习总结:

? ? ??初入深度学习,在B站上学习了线性模型,对于其中认识总结如下:

? ? ?深度学习作为机器学习的一个分支,起源于生物神经科学,通过数学,工程学发展实现运用到了机器学习中,在机器学习中最重要的就是模型的构建,在我看来这个模型其实就是求得y=f(x)关系,给定一个输入,模型根据输入自动得到一个输出,这其实就是简单的AI

? ? ?对于模型给定的输入可以是图片,例如输入一张猫或狗的图片,让模型根据根据输入判断是否是猫或者狗,也可以是房价信息,要求模型根据以往的输入对未来房价信息给定预测,这两大基本任务便引申出了机器学习的两大任务,分类于回归(预测)

? ? 那么如何构建出y=f(x)呢?这是模型的关键,越复杂的模型y与x之间越参数复杂,但无论是复杂模型或是简单的模型,我们都是通过给定数据,让模型通过给定的数据进行学习,最终成功得到y=f(x)(这一点参照人类学习方式,我们所做出的推断都是对以往经验进行总结最终根据实际情况进行推测,因此再高大上的AI也好,其实也得通过学习后最终才能实现仿人)

? ?给定的数据可以称为数据集,分为训练集和测试集,测试集用于模型训练,测试集对模型进行测试,而验证集则可以对模型进行运用,在kaggle竞赛中,由于测试集(测试模型好坏)参加者不可看结果,因此常常又会把训练集自己分为训练集和测试集从而让模型不会过拟合,泛化能力可以提高

简单线性模型实现

? ? ?在模型搭建我们通常会先使用一个线性模型进行训练,不行在换一个模型进行训练?假定本次线性模型y = wx +b,我们需要通过给定的数据求得 w 和 b(越复杂的模型y与x之间越参数复杂),对于w 和 b,本次实践利用算法里面的穷举法,将w与b进行穷举赋值,然后输入x_data,得到模型预测结果y_pred ,对于每次x_data得到的y_pred与y_data真实值做损失,当损失最小时候,便得到最终的模型,也就是y = f (x)?

代码实现:

下面是线性模型的简单构建:

带入numpy库和matplotlib库,使用Axes3D的库绘制3D的Loss曲线:

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

假定本次任务是实现最简单的房价预测 第一年 房价2元,第二年 4元,第三年 6元

汇总成数据集x_data? y_data:

x_data =[1.0,2.0,3.0]
y_data =[2.0,4.0,6.0]

模型搭建:

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

Loss函数:

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

模型训练(计算Loss):w_list,b_list,mse_list存储对应的w、b以及平均平方损失值(MSE)

l_sum =0
w_list =[]
b_list =[]
mse_list = np.zeros((40, 40), dtype=float)
for i, w in enumerate(np.arange(0.0, 4.0, 0.1)):
  print("w=", w)
  for j, b in enumerate(np.arange(-2.0, 2.0, 0.1)):
     print("b=",b)
     l_sum =0.0
     for 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 = l_sum+loss_val
            print('\t', x_val, y_val, y_pred_val, loss_val)
     print("MSE=",l_sum/3)
     mse_list[i][j]=l_sum/3
     if w ==0:
      b_list.append(b)
  w_list.append(w)

3D绘图:使用numpy的meshgrid函数将w_list和b_list组成二维的numpy类型的数组,以及将mse_list转换为numpy类型的数组

x, y= np.meshgrid(w_list, b_list)
z = np.array(mse_list)

绘制Loss曲线:

fig = plt.figure()
ax = Axes3D(fig)
ax.plot_surface(x, y, z, rstride=1,  # row行步长
                cstride=2,  # colum列步长
                cmap='rainbow')  # 渐变颜色
plt.show()

结果展示,当w = 2.0 、b =0 时候损失最低(为什么出现这么多小数估计是精度损失问题)

?3D绘图展示:

本人小白一枚,刚入深度学习坑,有问题请大佬指出!不胜感激

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2021-08-22 13:32:41  更:2021-08-22 13:33:10 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/27 18:23:11-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码