深度学习 —— 1.单一神经元

 深度学习初级课程

  • 1.单一神经元
  • 2.深度神经网络
  • 3.随机梯度下降法
  • 4.过拟合和欠拟合
  • 5.剪枝、批量标准化
  • 6.二分类

 

前言


本套课程仍为 kaggle 课程《Intro to Deep Learning》,仍按之前《机器学习》系列课程模式进行。前一系列《Keras入门教程》内容,与本系列有部分重复内容,但重点在于快速入门深度学习中的keras 使用,即从代码入手,快速掌握代码的使用,原理讲得很少。
从原理入手,一步一代码,如果进行建模型的整个过程。

内容

欢迎来到深度学习!

欢迎来到 kaggle 的深度学习课程介绍!你就要学会开始构建自己的深度神经网络所需的一切。使用Keras和Tensorflow,您将学习如何:

  • 创建一个完全连接的神经网络架构
  • 将神经网络应用于两个经典的机器学习问题:回归和分类
  • 用随机梯度下降法训练神经网络,以及
  • 通过剪枝、批量标准化和其他技术提高性能
什么是深度学习?


近年来,人工智能领域最令人印象深刻的一些进展是在深度学习领域。自然语言翻译、图像识别和游戏都是深度学习模型接近甚至超过人类水平的任务。

那么什么是深度学习呢?深度学习是一种机器学习方法,其特点是计算量大。这种计算深度使深度学习模型能够解开在最具挑战性的现实世界数据集中发现的各种复杂和分层模式。

神经网络凭借其强大的功能和可扩展性,已经成为深度学习的定义模型。神经网络由神经元组成,每个神经元单独执行一个简单的计算。神经网络的力量来自于这些神经元所能形成的复杂连接。

线性单位

让我们从神经网络的基本组成部分开始:单个神经元。如图所示,只有一个输入的神经元(或单元)如下所示:

线性单位:y = w x + b

输入是 x ,它与神经元的连接有一个权重(weight),即w 。每当一个值流经一个连接时,你就用该连接的权重乘以该值。对于输入x ,到达神经元的是w ∗ x 。神经网络通过修改其权重来“学习”。

b 是一种特殊的权重,我们称之为偏差(bias)。偏差没有任何与之相关的输入数据;相反,我们把1 放在图中,这样到达神经元的值就是b (因为1 ∗ b = b )。偏压使神经元能够独立于输入修改输出。

y是神经元最终输出的值。为了得到输出,神经元将通过其连接接收到的所有值相加。这个神经元的激活是y = w ∗ x + b ,或者用公式y = w x + b 。

公式 y = w x + b 看起来熟悉吗?
这是一个直线方程,这是斜率截距方程,其中w 是斜率,b 是y截距。

示例-线性单元作为模型

虽然单个神经元通常只作为更大网络的一部分发挥作用,但从单个神经元模型开始作为基线通常是有用的。单神经元模型就是线性模型。

让我们思考一下,这在80种谷物这样的数据集上是如何工作的。训练一个以“糖”(每份糖的克数)为输入,以“卡路里”(每份卡路里)为输出的模型,我们可能会发现偏差为 b = 90,重量为 w = 2.5。我们可以这样估计每餐含5克糖的谷物的卡路里含量:

而且,对照我们的配方,我们的卡路里 = 2.5 × 5 + 90 = 102.5 ,就像我们预期的那样。

多输入

80 谷物数据集的功能远不止“糖”。如果我们想把模型扩展到包括纤维或蛋白质含量这样的东西呢?这很容易。我们可以给神经元增加更多的输入连接,每增加一个功能就增加一个。为了找到输出,我们将每个输入乘以其连接权重,然后将它们相加。
三个输入连接:x 0 、x 1 和 x 2 ,以及偏置b。

有三个输入的线性单元。

这个神经元的公式是y = w 0 x 0 + w 1 x 1 + w 2 x 2 + b 具有两个输入的线性单元将适合一个平面,而具有更多输入的单元将适合一个超平面。

Keras中的线性单位

在Keras中创建模型的最简单方法是通过Keras的 Sequential,它创建一个神经网络作为一个层堆栈。我们可以使用密集层(我们将在下一节中了解更多)创建类似上述模型的模型。

我们可以定义一个线性模型,接受三个输入特征(“糖sugars”、“纤维fiber”和“蛋白质protein”),并产生单一输出(“卡路里calories”),如下所示:

from tensorflow import keras
from tensorflow.keras import layers

# Create a network with 1 linear unit
model = keras.Sequential([
    layers.Dense(units=1, input_shape=[3])
])

通过第一个参数units,我们定义了需要多少输出。在这种情况下,我们只是预测“卡路calories”,所以我们将使用units=1。对于第二个参数input_shape,我们告诉Keras输入的维度。设置input_shape=[3]可确保模型将接受三个特征作为输入(“糖”、“纤维”和“蛋白质”)。

这个模型现在可以适应训练数据了!

为什么input_shape是Python列表?
我们将在本课程中使用的数据是表格数据,比如熊猫数据框。对于数据集中的每个功能,我们将有一个输入。这些特性是按列排列的,所以我们总是有input_shape=[num_columns]。Keras在这里使用列表的原因是允许使用更复杂的数据集。例如,图像数据可能需要三个维度:[高度、宽度、通道]。

轮到你了

为红酒质量数据集定义一个线性模型。


练习部分

介绍

在教程中,我们学习了神经网络的构建模块:线性单元。我们看到,只有一个线性单元的模型将线性函数拟合到数据集(相当于线性回归)。在本练习中,您将构建一个线性模型,并在Keras中练习使用模型。

在开始之前,运行下面的代码单元来设置所有内容。

# Setup plotting
import matplotlib.pyplot as plt

plt.style.use('seaborn-whitegrid')
# Set Matplotlib defaults
plt.rc('figure', autolayout=True)
plt.rc('axes', labelweight='bold', labelsize='large',
       titleweight='bold', titlesize=18, titlepad=10)

# Setup feedback system
from learntools.core import binder
binder.bind(globals())
from learntools.deep_learning_intro.ex1 import *

红酒质量数据集由大约1600种葡萄牙红酒的理化测量数据组成。此外,还包括盲品测试中每种葡萄酒的质量评级。
首先,运行下一个单元格以显示此数据集的前几行。

import pandas as pd
​
red_wine = pd.read_csv('../input/dl-course-data/red-wine.csv')
red_wine.head()

可以使用shape属性获取数据帧(或Numpy数组)的行数和列数。

red_wine.shape # (rows, columns)

(1599, 12)

1) 输入维度

通过理化测量,我们能很好地预测葡萄酒的感知质量吗?
目标是“质量”,剩下的列是特性。在这项任务中,如何设置Keras模型的input_shape参数?

# YOUR CODE HERE
input_shape = ____

# Check your answer
q_1.check()
2) 定义一个线性模型

现在定义一个适合此任务的线性模型。注意模型应该有多少输入和输出。

from tensorflow import keras
from tensorflow.keras import layers

# YOUR CODE HERE
model = ____

# Check your answer
q_2.check()

3) 查看权重
在内部,Keras用张量表示神经网络的权重。张量基本上是TensorFlow版本的Numpy数组,有一些差异使它们更适合深度学习。其中最重要的一点是张量与GPU(GPU)和TPU(TPU)加速器兼容。事实上,TPU是专门为张量计算而设计的。
模型的权重作为张量列表保存在其权重属性中。获取上面定义的模型的权重。

# YOUR CODE HERE
w, b = w, b = _____
​
# Check your answer
q_3.check()
Weights
<tf.Variable 'dense/kernel:0' shape=(11, 1) dtype=float32, numpy=
array([[ 0.54436415],
       [-0.14202559],
       [ 0.6889222 ],
       [ 0.2318945 ],
       [-0.6457067 ],
       [ 0.40594786],
       [ 0.04871047],
       [-0.20195675],
       [ 0.20735556],
       [ 0.13860786],
       [-0.18090099]], dtype=float32)>

Bias
<tf.Variable 'dense/bias:0' shape=(1,) dtype=float32, numpy=array([0.], dtype=float32)>

正确:你看到每个输入都有一个权重(和一个偏差)了吗?但是请注意,权重值似乎没有任何模式。在训练模型之前,权重设置为随机数(偏差设置为0.0)。神经网络通过寻找更好的权值进行学习。

(顺便说一句,Keras将权重表示为张量,但也使用张量表示数据。当您设置input_shape参数时,您告诉Keras它应该为训练数据中的每个示例预期的数组维度。设置input_shape=[3]将创建一个接受长度为3的向量的网络,如[0.2,0.4,0.6])

可选:绘制未经训练的线性模型的输出


我们将在第5课中学习的这类问题是回归问题,目标是预测一些数值目标。回归问题就像“曲线拟合”问题:我们试图找到一条最适合数据的曲线。让我们看看线性模型产生的“曲线”。(你可能已经猜到这是一条线了!)
我们提到,在训练之前,模型的权重是随机设置的。运行下面的单元格几次,查看随机初始化生成的不同行。(这个练习没有编码——只是一个演示。)

import tensorflow as tf
import matplotlib.pyplot as plt

model = keras.Sequential([
    layers.Dense(1, input_shape=[1]),
])

x = tf.linspace(-1.0, 1.0, 100)
y = model.predict(x)

plt.figure(dpi=100)
plt.plot(x, y, 'k')
plt.xlim(-1, 1)
plt.ylim(-1, 1)
plt.xlabel("Input: x")
plt.ylabel("Target y")
w, b = model.weights # you could also use model.get_weights() here
plt.title("Weight: {:0.2f}\nBias: {:0.2f}".format(w[0][0], b[0]))
plt.show()

继续前进

在第2课中添加隐藏层并使模型深入。


答案
# 1)输入维度
input_shape = [11]
# you could also use a 1-tuple, like input_shape = (11,)
# 也可以输入元组模式

# 2)定义线性模型
from tensorflow import keras
from tensorflow.keras import layers

model = keras.Sequential([
    layers.Dense(units=1, input_shape=[11])
])

# 3)查看权重
w, b = model.weights
print("Weights\n{}\n\nBias\n{}".format(w, b))

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

<电力行业> - 《第1课:电力行业的五大四小》

1 什么是电力行业的五大四小&#xff1f; 我们常说的电力行业的五大四小&#xff0c;指的是电力行业有实力的公司&#xff0c;分为&#xff1a;较强梯队的五大集团、较弱梯队的四小豪门。 五个实力雄厚的集团&#xff0c;分别是&#xff1a; 中国华能集团公司中国大唐集团公…

Gemalto加密狗的优势

Gemalto加密狗&#xff0c;作为硬件加密技术的杰出代表&#xff0c;为软件开发商和用户提供了一种高效、安全的解决方案。这种加密狗不仅拥有卓越的加密性能&#xff0c;还具备易用性和可靠性&#xff0c;是保护软件知识产权和防止非法复制的重要工具。 一、Gemalto加密狗的核心…

玄奘取经线路矢量图分享

我们在《透过丝绸之路&#xff0c;看古人都走过哪些地方》一文中&#xff0c;为你分享过丝绸之路的矢量图数据。 现在&#xff0c;我们再为你分享一下玄奘取经线路的矢量图&#xff0c;你可以在文末查看这些数据的领取方式。 玄奘取经线路 《西游记》的故事相信大家都不陌生…

点在多边形内的判断

利用三角形相似. d e l t a L a t 1 d e l t a L a t 2 t a r g e t L o n d e l t a L o n \frac{deltaLat1}{deltaLat2} \frac{targetLon}{deltaLon} \\ deltaLat2deltaLat1​deltaLontargetLon​ t a r g e t L o n d e l t a L a t 1 d e l t a L o n d e l t a L a t…

洛谷 P10584 [蓝桥杯 2024 国 A] 数学题(整除分块+杜教筛)

题目 思路来源 登录 - Luogu Spilopelia 题解 参考了两篇洛谷题解&#xff0c;第一篇能得出这个式子&#xff0c;第二篇有比较严格的复杂度分析 结合去年蓝桥杯洛谷P9238&#xff0c;基本就能得出这题的正确做法 代码 #include<bits/stdc.h> #include<iostream&g…

中国 AGI 市场—4543 亿市场下的新机会

前言 我们正站在一个全新智能纪元的路口&#xff0c;围绕通用人工智能&#xff08;AGI&#xff09;&#xff0c;在学术界、科技界、产业界的讨论中&#xff0c;一部分 AGI 的神秘面纱已被揭开&#xff0c;但这面纱之后还有更多的未知等待着我们。 InfoQ 研究中心在此背景下&a…

示波器探头口碑性价比好的品牌有哪些推荐

示波器探头作为测试测量设备中的重要组成部分&#xff0c;市场上存在多个知名品牌。以下是一些主要的示波器探头品牌及其相关信息&#xff1a; Pintech品致&#xff1a;作为全球示波器探头第一品牌&#xff0c;Pintech品致是示波器探头技术标准倡导者&#xff0c;以及“两点浮…

【已解决】ModuleNotFoundError: No module named ‘_tkinter‘

由于网络上大多文章都是有关No module named tkinter’的问题&#xff0c;而没有实质性解决_tkinter找不到的问题。注意&#xff1a;这两个报错是不同的&#xff01;&#xff01;&#xff01; 对于No module named _tkinter问题&#xff0c;如果你使用了网络上大部分方法都不适…

利用opencv自带的Haar级联分类器模型

OpenCV自带的Haar级联分类器模型&#xff1a; haarcascade_eye.xml: 这个模型用于检测眼睛。 haarcascade_eye_tree_eyeglasses.xml: 这个模型用于检测眼镜。 haarcascade_frontalcatface.xml: 这个模型用于检测猫脸。 haarcascade_frontalcatface_extended.xml: 这个模型用…

数字化转型的难点在哪里?该如何突破?

我先把结论抛出来&#xff1a;数字化转型的难点不在于“数字化”&#xff0c;而在于“转型”。 如何理解这句话呢&#xff1f; 如果你此前做过数字化转型&#xff0c;想必也都清楚这一点&#xff0c;即&#xff1a;“数字化”解决的是生产工具的升级换代问题&#xff0c;“转…

Labview_网络流

网络流的介绍 网络流是一种易于配置、紧密集成的动态通信方法&#xff0c;用于将数据从一个应用程序传输到另一个应用程序&#xff0c;其吞吐量和延迟特性可与 TCP 相媲美。但是&#xff0c;与 TCP 不同的是&#xff0c;网络流直接支持任意数据类型的传输&#xff0c;而无需先…

若依前后端分离项目整合shardingjdbc分表(详细,分片字段订单id)

文章目录 1. 引入Maven依赖2.引入配置文件3.兼容之前的数据库源,使用现在的sharding数据库源&#xff08;shardingjdbc默认的数据源&#xff09;&#xff0c;但是配置好文件之后是没有生效的&#xff0c;需要加配置文件覆盖4. 检测是否成功5. 如何使用&#xff0c;在需要使用的…

【大数据开发语言Scala的入门教程】

&#x1f3a5;博主&#xff1a;程序员不想YY啊 &#x1f4ab;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家 &#x1f917;点赞&#x1f388;收藏⭐再看&#x1f4ab;养成习惯 ✨希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出…

基于Java微信小程序同城家政服务系统设计和实现(源码+LW+调试文档+讲解等)

&#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN作者、博客专家、全栈领域优质创作者&#xff0c;博客之星、平台优质作者、专注于Java、小程序技术领域和毕业项目实战✌&#x1f497; &#x1f31f;文末获取源码数据库&#x1f31f;感兴趣的可以先收藏起来&#xff0c;还…

探索AI世界系列:俗说AI智能体

AI agent&#xff0c;翻译为中文就是AI智能体。 什么是AI智能体呢&#xff1f; 一&#xff0c;GPT对AI智能体的定义 AI智能体&#xff0c;即人工智能体&#xff08;Artificial Intelligence Agent&#xff09;&#xff0c;是具有自主性、学习能力和推理能力的计算机程序。 …

华为盘古大模型微调实践

1. 什么是大模型 2. 指令微调介绍 3. 盘古大模型指令微调实践 4. Q&A 分享嘉宾&#xff5c;吴章淋 华为技术有限公司 nlp算法研究工程师 编辑整理&#xff5c;Tony Wang 内容校对&#xff5c;李瑶 出品社区&#xff5c;DataFun 01 什么是大模型 首先来介绍一下什…

「漏洞复现」通天星CMSV6车载定位监控平台 point_manage/merge SQL注入致RCE漏洞

0x01 免责声明 请勿利用文章内的相关技术从事非法测试&#xff0c;由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失&#xff0c;均由使用者本人负责&#xff0c;作者不为此承担任何责任。工具来自网络&#xff0c;安全性自测&#xff0c;如有侵权请联系删…

二叉树 | Java | LeetCode 235 701 450 做题总结,BST特性、 调整二叉树结构(增+删)

235. 二叉搜索树的最近公共祖先 思路&#xff1a;要利用二叉搜索数的性质。当前遍历节点 cur 的数值大于p q时&#xff0c;说明 p q 的父节点在 cur 的左子树。当前遍历节点 cur 的数值小于p q时&#xff0c;说明 p q 的父节点在 cur 的右子树。当前遍历节点 cur 的数值在 p q…

记录一个前端axios传参格式的问题

今天改造一个其他系统的页面&#xff0c;直接把原来系统的接口拿过来复用&#xff0c;发现怎么传参都报400&#xff0c;地址参数都一样&#xff0c;怎么就报错了呢&#xff0c;报错原因大概是后台无法解析出参数&#xff08;后台属于其他平台&#xff0c;无法测试&#xff09;。…

python 中关于无法导入自己写的类

python 中关于无法导入自己写的类。解决方法 - Jc_code - 博客园 (cnblogs.com)https://www.cnblogs.com/jc-home/p/12098065.html 加个.就挺好