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

深度学习介绍及简单应用

引言深度学习背后的主要原理是从大脑中汲取灵感。,这种观点产生了“神经网络”术语,大脑包含数十亿个神经元,它们之间有数万个连接。在许多情况下,深度学习算法类似于大脑,因为大脑和深度学习模型都涉

引言

  深度学习背后的主要原理是从大脑中汲取灵感。,这种观点产生了“神经网络”术语,大脑包含数十亿个神经元,它们之间有数万个连接。 在许多情况下,深度学习算法类似于大脑,因为大脑和深度学习模型都涉及大量的计算单元(神经元),这些单元在未激活时并不是活跃的,它们彼此交互时会变得智能化。

神经元

  神经网络的基本构建模块是人工神经元--模仿人类大脑神经元。 这些是强大的计算单元,具有加权输入信号并使用激活功能产生输出信号。 这些神经元分布在神经网络的几个层中。

 

什么网络是如何工作的?

  深度学习由人工神经网络组成,这些网络以人脑中存在的类似网络为模型。 当数据通过这个人工网格时,每个层处理数据的一个方面,过滤异常值,找到合适的实体,并产生最终输出。

  • 输入层(Input Layer):该层由神经元组成,它们不接收输入并将其传递给其他层。 输入层中的元素应等于数据集中的属性(即变量个数)。
  • 输出图层(Output Layer):输出图层是预测的特征,它主要取决于模型的类型。
  • 隐藏层(Hidden Layer):在输入和输出层之间,将存在基于模型类型的隐藏层。 隐藏层包含大量神经元。 隐藏层中的神经元将变换应用于输入。 随着网络的训练,权重得到更新,更具预测性。

 神经元的权重

  权重是指两个神经元之间连接的强度或幅度,如果您熟悉线性回归,则可以比较输入的权重,例如我们在回归方程中使用的系数。权重通常被初始化为较小的随机值,例如 在0到1之间。

前馈深度网络

  前馈监督神经网络是第一个也是最成功的学习算法。 它们也被称为深度网络,多层感知器(MLP)或简单的神经网络,并且显示出了具有单个隐藏层的连接体系结构。 

  网络处理输入变量,并向后传递,激活神经元,最终产生输出值。这被称为网络上的前向传递。

 

 

激活函数

  激活函数是加权输入与神经元输出的加和的映射。 它被称为激活或者传递函数,因为它控制激活神经元的初始值和输出信号的强度。 

表达式:

常用的有:

反向传播
  将网络的预测值与预期输出进行比较,并使用函数计算误差, 然后,该错误在整个网络内传播回来,一次一层,并根据它们对错误的贡献值更新权重。 这个聪明的数学运算称为反向传播算法。 对训练数据中的所有示例重复该过程。 为整个训练数据集更新网络的一轮称为纪元。 可以训练网络数十,数百或数千个时期。

 

成本函数和梯度下降
  成本函数是神经网络对其给定的训练输入和预期输出所做的“有多好”的度量。 它还可能取决于权重和偏差等属性。

  成本函数是单值的,而不是向量,因为它评估神经网络作为一个整体执行得有多好。 使用梯度下降优化算法,在每个时期之后递增地更新权重。

  成本函数:

  通过在成本梯度的相反方向上采取步骤来计算权重更新的大小和方向。

  其中Δw是包含每个权重系数w的权重更新的向量,其计算如下:

 

  我们计算梯度下降直到导数达到最小误差,并且每个步骤由斜率(梯度)的陡度确定。

 

多层感知器(前向传播)
  这类网络由多层神经元组成,通常以前馈方式互连(向前移动)。一层中的每个神经元具有与后续层的神经元的直接连接。在许多应用中,这些网络的单元应用sigmoid或ReLU作为激活功能。

  现在考虑一个问题,找出交易数量,给定帐户和家庭成员作为输入。

  首先要解决这个问题,我们需要从创建前向传播神经网络开始。我们的输入图层将是家庭成员和帐户的数量,隐藏图层的数量是一个,输出图层将是交易数量。

给定权重,如图所示,从输入层到隐藏层,其中家庭成员2的数量和账户数量3作为输入。

  现在,将通过以下步骤使用前向传播来计算隐藏层(i,j)和输出层(k)的值。

处理过程

  1. 乘法 - 添加过程。
  2. 点积(输入*权重)。
  3. 一次一个数据点的前向传播。
  4. 输出是该数据点的预测。

  $i$的值将根据输入值和与所连接的神经元相对应的权重来计算。

  $i = (2 * 1) + (3 * 1)$

  → i = 5

  类似的,

  $j = (2 * -1) + (3 * 1)$

  → j = 1

  $K = (5 * 2) + (1 * -1)$

  → k = 9

python 实现

  为了使神经网络达到最大预测能力,我们需要为隐藏层应用激活函数。它用于捕获非线性。 我们将它们应用于输入层,隐藏层以及值上的某些方程式。

 

这里我们使用ReLU激活函数。

import numpy as np

def relu(input):
    # Rectified Linear Activation
    output = max(input, 0)
    return(output)

print("Enter the two values for input layers")


a = int(input())


b = int(input())


input_data = np.array([a, b])

weights = {
    'node_0': np.array([1, 1]),
    'node_1': np.array([-1, 1]),
    'output_node': np.array([2, -1])
}

node_0_input = (input_data * weights['node_0']).sum()
node_0_output = relu(node_0_input)

node_1_input = (input_data * weights['node_1']).sum()
node_1_output = relu(node_1_input)

hidden_layer_outputs = np.array([node_0_output, node_1_output])

model_output = (hidden_layer_outputs * weights['output_node']).sum()

print(model_output)

 

 输出:

Enter the two values for input layers
2
3
9

 

 

 

 

 


推荐阅读
  • 本文介绍了使用Spark实现低配版高斯朴素贝叶斯模型的原因和原理。随着数据量的增大,单机上运行高斯朴素贝叶斯模型会变得很慢,因此考虑使用Spark来加速运行。然而,Spark的MLlib并没有实现高斯朴素贝叶斯模型,因此需要自己动手实现。文章还介绍了朴素贝叶斯的原理和公式,并对具有多个特征和类别的模型进行了讨论。最后,作者总结了实现低配版高斯朴素贝叶斯模型的步骤。 ... [详细]
  • [大整数乘法] java代码实现
    本文介绍了使用java代码实现大整数乘法的过程,同时也涉及到大整数加法和大整数减法的计算方法。通过分治算法来提高计算效率,并对算法的时间复杂度进行了研究。详细代码实现请参考文章链接。 ... [详细]
  • 也就是|小窗_卷积的特征提取与参数计算
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了卷积的特征提取与参数计算相关的知识,希望对你有一定的参考价值。Dense和Conv2D根本区别在于,Den ... [详细]
  • 不同优化算法的比较分析及实验验证
    本文介绍了神经网络优化中常用的优化方法,包括学习率调整和梯度估计修正,并通过实验验证了不同优化算法的效果。实验结果表明,Adam算法在综合考虑学习率调整和梯度估计修正方面表现较好。该研究对于优化神经网络的训练过程具有指导意义。 ... [详细]
  • 3.223.28周学习总结中的贪心作业收获及困惑
    本文是对3.223.28周学习总结中的贪心作业进行总结,作者在解题过程中参考了他人的代码,但前提是要先理解题目并有解题思路。作者分享了自己在贪心作业中的收获,同时提到了一道让他困惑的题目,即input details部分引发的疑惑。 ... [详细]
  • 第四章高阶函数(参数传递、高阶函数、lambda表达式)(python进阶)的讲解和应用
    本文主要讲解了第四章高阶函数(参数传递、高阶函数、lambda表达式)的相关知识,包括函数参数传递机制和赋值机制、引用传递的概念和应用、默认参数的定义和使用等内容。同时介绍了高阶函数和lambda表达式的概念,并给出了一些实例代码进行演示。对于想要进一步提升python编程能力的读者来说,本文将是一个不错的学习资料。 ... [详细]
  • 本文介绍了在Python张量流中使用make_merged_spec()方法合并设备规格对象的方法和语法,以及参数和返回值的说明,并提供了一个示例代码。 ... [详细]
  • YOLOv7基于自己的数据集从零构建模型完整训练、推理计算超详细教程
    本文介绍了关于人工智能、神经网络和深度学习的知识点,并提供了YOLOv7基于自己的数据集从零构建模型完整训练、推理计算的详细教程。文章还提到了郑州最低生活保障的话题。对于从事目标检测任务的人来说,YOLO是一个熟悉的模型。文章还提到了yolov4和yolov6的相关内容,以及选择模型的优化思路。 ... [详细]
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • 本文介绍了Python异常的捕获、传递与抛出操作,并提供了相关的操作示例。通过异常的捕获和传递,可以有效处理程序中的错误情况。同时,还介绍了如何主动抛出异常。通过本文的学习,读者可以掌握Python中异常处理的基本方法和技巧。 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • sklearn数据集库中的常用数据集类型介绍
    本文介绍了sklearn数据集库中常用的数据集类型,包括玩具数据集和样本生成器。其中详细介绍了波士顿房价数据集,包含了波士顿506处房屋的13种不同特征以及房屋价格,适用于回归任务。 ... [详细]
  • 本文介绍了南邮ctf-web的writeup,包括签到题和md5 collision。在CTF比赛和渗透测试中,可以通过查看源代码、代码注释、页面隐藏元素、超链接和HTTP响应头部来寻找flag或提示信息。利用PHP弱类型,可以发现md5('QNKCDZO')='0e830400451993494058024219903391'和md5('240610708')='0e462097431906509019562988736854'。 ... [详细]
  • 浏览器中的异常检测算法及其在深度学习中的应用
    本文介绍了在浏览器中进行异常检测的算法,包括统计学方法和机器学习方法,并探讨了异常检测在深度学习中的应用。异常检测在金融领域的信用卡欺诈、企业安全领域的非法入侵、IT运维中的设备维护时间点预测等方面具有广泛的应用。通过使用TensorFlow.js进行异常检测,可以实现对单变量和多变量异常的检测。统计学方法通过估计数据的分布概率来计算数据点的异常概率,而机器学习方法则通过训练数据来建立异常检测模型。 ... [详细]
  • 学习Java异常处理之throws之抛出并捕获异常(9)
    任务描述本关任务:在main方法之外创建任意一个方法接收给定的两个字符串,把第二个字符串的长度减1生成一个整数值,输出第一个字符串长度是 ... [详细]
author-avatar
life-death-swallow_204
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有