热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

卷积神经网络02(线性模型、穷举法)

步骤:1数据集2模型选择(根据数据集的情况进行选择)3训练(knn等)大部分都需要training4推理训练好以后对以后的预测和应用输入x预测y以上监督学习训练好了

步骤:
1 数据集

2 模型选择(根据数据集的情况进行选择)

3 训练(knn等)大部分都需要training

4 推理

在这里插入图片描述
加粗样式
训练好以后对以后的预测和应用
输入 x
预测 y
以上监督学习
训练好了以后需要测试集进行评估
随机猜测(对于权重可以使用随机猜测进行)
在这里插入图片描述
平均损失,可以看到当预测是3,6,9的时候,平均损失是14/3。
因此为了得到比较好的模型,更好的反应理想分布,这个时候就要找最小的损失。
另外,为什么要使用平方了,为了防止误差有负数,相互抵消了。
在这里插入图片描述
MSE(Mean Square Error)
在这里插入图片描述
综上可知,为了解决这个问题,就要找到这样的预测权重值,使得误差最小,这就是我们要求取的权重值。
初中学数学的时候,为了验证,我们采用穷举法,就是尽可能多的列举数据,去验证和计算。
在这里插入图片描述

# 1 导入所需要的库
import numpy as np
import matplotlib.pyplot as plt# 2 创建或者导入数据集
x_data = [1.0,2.0,3.0]
y_data = [2.0,4.0,6.0]# 3 前向传播
def forward(x):return x * w# 4 loss计算
def loss(x,y):y_pred = forward(x)return (y_pred - y) * (y_pred - y)# 5 定义两个列表用于接收权重和误差
w_list = []
mse_list = []# 6 穷举进行操作,从0.0,-4.0间隔0.1进行取值
for w in np.arange(0.0,4.1,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/3)# 7 将权重和误差放入新建的列表中,用于输出绘图使用w_list.append(w)mse_list.append(l_sum/3)l_sum_min = min(mse_list)print(l_sum_min)# 8可视化绘图,将第7步保存的权重和误差用绘图的形式,绘制出来
plt.plot(w_list,mse_list,c='g')
plt.ylabel('loss')
plt.xlabel('w')
plt.show()# 9总结:正常情况下,不使用w作为可视化的横坐标,而是使用epoch当做横坐标,通过迭代进行。

在这里插入图片描述
w= 4.0
1.0 2.0 4.0 4.0
2.0 4.0 8.0 16.0
3.0 6.0 12.0 36.0
MSE= 18.666666666666668
0.0
上面每一步的作用我都有注释,有助于各位理解。

学习心得
概括一下就是,学习深度学习的时候,无非就是下面几步
1 准备数据集(生成或者导入)

2 根据数据的情况构建模型

3 定义前向传播和反向传播

4 代入训练模型

5 可视化训练结果

注意:后面学习的是通过epoch作为横坐标,本实验用的是w(权重)作为横坐标,是不一样的,因为在训练的时候,如果模型比较负责,权重就不会是线性的,可能是一个平面的。因此后面就会通过训练的轮数作为训练的结果可视化的横坐标,这样就可以根据每一轮训练的损失作为纵坐标,从而进行展示。


推荐阅读
  • 毕业设计:基于机器学习与深度学习的垃圾邮件(短信)分类算法实现
    本文详细介绍了如何使用机器学习和深度学习技术对垃圾邮件和短信进行分类。内容涵盖从数据集介绍、预处理、特征提取到模型训练与评估的完整流程,并提供了具体的代码示例和实验结果。 ... [详细]
  • 尽管使用TensorFlow和PyTorch等成熟框架可以显著降低实现递归神经网络(RNN)的门槛,但对于初学者来说,理解其底层原理至关重要。本文将引导您使用NumPy从头构建一个用于自然语言处理(NLP)的RNN模型。 ... [详细]
  • 本文详细介绍了Java中org.neo4j.helpers.collection.Iterators.single()方法的功能、使用场景及代码示例,帮助开发者更好地理解和应用该方法。 ... [详细]
  • 1.如何在运行状态查看源代码?查看函数的源代码,我们通常会使用IDE来完成。比如在PyCharm中,你可以Ctrl+鼠标点击进入函数的源代码。那如果没有IDE呢?当我们想使用一个函 ... [详细]
  • 本文详细介绍了Akka中的BackoffSupervisor机制,探讨其在处理持久化失败和Actor重启时的应用。通过具体示例,展示了如何配置和使用BackoffSupervisor以实现更细粒度的异常处理。 ... [详细]
  • 本文探讨了如何在给定整数N的情况下,找到两个不同的整数a和b,使得它们的和最大,并且满足特定的数学条件。 ... [详细]
  • 本文介绍了如何使用 Python 的 Bokeh 库在图表上绘制菱形标记。Bokeh 是一个强大的交互式数据可视化工具,支持丰富的图形自定义选项。 ... [详细]
  • 本文介绍如何使用Objective-C结合dispatch库进行并发编程,以提高素数计数任务的效率。通过对比纯C代码与引入并发机制后的代码,展示dispatch库的强大功能。 ... [详细]
  • 本文介绍了如何在C#中启动一个应用程序,并通过枚举窗口来获取其主窗口句柄。当使用Process类启动程序时,我们通常只能获得进程的句柄,而主窗口句柄可能为0。因此,我们需要使用API函数和回调机制来准确获取主窗口句柄。 ... [详细]
  • 基因组浏览器中的Wig格式解析
    本文详细介绍了Wiggle(Wig)格式及其在基因组浏览器中的应用,涵盖variableStep和fixedStep两种主要格式的特点、适用场景及具体使用方法。同时,还提供了关于数据值和自定义参数的补充信息。 ... [详细]
  • 本文深入探讨了 Python 中的循环结构(包括 for 循环和 while 循环)、函数定义与调用,以及面向对象编程的基础概念。通过详细解释和代码示例,帮助读者更好地理解和应用这些核心编程元素。 ... [详细]
  • 深入理解Redis的数据结构与对象系统
    本文详细探讨了Redis中的数据结构和对象系统的实现,包括字符串、列表、集合、哈希表和有序集合等五种核心对象类型,以及它们所使用的底层数据结构。通过分析源码和相关文献,帮助读者更好地理解Redis的设计原理。 ... [详细]
  • Coursera ML 机器学习
    2019独角兽企业重金招聘Python工程师标准线性回归算法计算过程CostFunction梯度下降算法多变量回归![选择特征](https:static.oschina.n ... [详细]
  • 机器学习核心概念与技术
    本文系统梳理了机器学习的关键知识点,涵盖模型评估、正则化、线性模型、支持向量机、决策树及集成学习等内容,并深入探讨了各算法的原理和应用场景。 ... [详细]
  • 本文介绍了如何利用TensorFlow框架构建一个简单的非线性回归模型。通过生成200个随机数据点进行训练,模型能够学习并预测这些数据点的非线性关系。 ... [详细]
author-avatar
郭原雪2865
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有