深度学习 —— 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 pltplt.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 pltmodel = 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 layersmodel = keras.Sequential([layers.Dense(units=1, input_shape=[11])
])# 3)查看权重
w, b = model.weights
print("Weights\n{}\n\nBias\n{}".format(w, b))
相关文章:

深度学习 —— 1.单一神经元
深度学习初级课程 1.单一神经元2.深度神经网络3.随机梯度下降法4.过拟合和欠拟合5.剪枝、批量标准化6.二分类 前言 本套课程仍为 kaggle 课程《Intro to Deep Learning》,仍按之前《机器学习》系列课程模式进行。前一系列《Keras入门教程》内容,与本系列…...
Android 12.0 通知发送过程源码分析-Framework
以下NotificationManagerService简称 NMS 1. 通知的发送: NotificationManager.notify(int id, Notification notification) 开始. 源码路径: /frameworks/base/core/java/android/app/NotificationManager.java/***发布通知以显示在状态栏中。 如果通知带有* 相同的 ID 已被…...
提防远程攻击:了解正向 Shell 和反向 Shell 确保服务器安全
前言 在当今网络安全形势日益复杂的环境中,了解正向 Shell 和反向 Shell 的工作原理和使用场景,对于保护你的服务器免受远程攻击至关重要。本文不仅深入解析这两种常见的远程控制技术,还将提供有效的防护建议,帮助你提升服务器的…...
RabbitMQ中CorrelationData 与DeliveryTag的区别
在RabbitMQ中,CorrelationData是一个用于封装业务ID信息的类,它主要在消息确认机制中发挥作用。以下是关于CorrelationData在RabbitMQ中的详细作用: 封装业务ID信息: 当发送消息时,可以将业务ID信息封装在Correlation…...

数据恢复篇:如何在Android上恢复删除的短信
如果您不小心删除了Android设备上的短信并想要检索它们,则可以尝试以下方法: 如何在Android上恢复删除的短信 检查您的备份: 如果您之前备份了Android设备,则可以从备份中恢复已删除的短信。检查您设备的内部存储空间或 Google 云…...

花了大几万的踩坑经验!宠物空气净化器哪个牌子好:希喂、小米、有哈PK
我的闺蜜最近向我大吐苦水,自从家里养了猫之后,她发现家里的空气质量大不如前。宠物的浮毛和排泄物的气味在空气中飘散,让她非常怀念以前没有养猫时家里清新的呼吸环境。她觉得这些漂浮的毛发和异味大大降低了居家的舒适度。 还引起了身体上…...

查普曼大学团队使用惯性动捕系统制作动画短片
道奇电影和媒体艺术学院是查普曼大学的知名学院,同时也是美国首屈一指的电影学院之一,拥有一流电影制作工作室。 最近,道奇学院的一个学生制作团队接手了一个项目,该项目要求使用真人动作、视觉效果以及真人演员和CG角色之间的互动…...

vue 代理
一、常用的发送一个ajax请求: 1、xhr new XMLHttpRequest(),真正开发中不常用 2、jq,jq主要功能是获取dom,周边才是请求接口 3、axios(大名鼎鼎的) axios.get("url").then(response>{},error>{} )4、…...

[leetcode]24-game
. - 力扣(LeetCode) class Solution { public:static constexpr int TARGET 24;static constexpr double EPSILON 1e-6;static constexpr int ADD 0, MULTIPLY 1, SUBTRACT 2, DIVIDE 3;bool judgePoint24(vector<int> &nums) {vector&l…...
网络爬虫的原理
网络爬虫的原理 网络爬虫,作为信息检索和数据分析的重要工具,其原理的核心在于模拟人类浏览网页的行为,通过自动化的方式从互联网上收集所需的数据。在了解了网络爬虫的基本原理后,我们可以进一步探讨其在实际应用中的工作机制以…...

游戏AI的创造思路-技术基础-机器学习(2)
本篇存在大量的公式,数学不好的孩子们要开始恶补数学了,尤其是统计学和回归方程类的内容。 小伙伴们量力而行~~~~~ 游戏呢,其实最早就是数学家、元祖程序员编写的数学游戏,一脉相承传承至今,囊括了更多的设计师、美术…...
【深度学习】记录为什么没有调用GPU
排查CLIP为什么评测推理没有调用GPU,主要是这个代码:https://github.com/OFA-Sys/Chinese-CLIP/blob/master/cn_clip/eval/extract_features.py 第一次认为:因为model并没有to.cuda()。 但是又发现,model.cuda(args.gpu) # 已经加…...

vite 创建vue3项目 集成 ESLint、Prettier、Sass等
在网上找了一大堆vue3脚手架的东西,无非就是vite或者vue-cli,在vue2时代,vue-cli用的人挺多的,也很好用,然而vue3大多是和vite搭配搭建的,而且个人感觉vite这个脚手架并没有那么的好用,搭建项目时只能做两个…...

计算机系统基础知识(上)
目录 计算机系统的概述 计算机的硬件 处理器 存储器 总线 接口 外部设备 计算机的软件 操作系统 数据库 文件系统 计算机系统的概述 如图所示计算机系统分为软件和硬件:硬件包括:输入输出设备、存储器,处理器 软件则包括系统软件和…...

[深度学习]循环神经网络RNN
RNN(Recurrent Neural Network,即循环神经网络)是一类用于处理序列数据的神经网络,广泛应用于自然语言处理(NLP)、时间序列预测、语音识别等领域。与传统的前馈神经网络不同,RNN具有循环结构&am…...

【C++:list】
list概念 list是一个带头的双向循环链表,双向循环链表的特色:每一个节点拥有两 个指针进行维护,俩指针分别为prev和next,prev指该节点的前一个节点,next为该节点的后一个节点 list的底层实现中为什么对迭代器单独写一个结构体进行…...
解锁 Apple M1/M2 上的深度学习力量:安装 TensorFlow 完全指南
前言 随着 Apple M1 和 M2 芯片的问世,苹果重新定义了笔记本电脑和台式机的性能标准。这些强大的芯片不仅适用于日常任务,还能处理复杂的机器学习和深度学习工作负载。本文将详细介绍如何在 Apple M1 或 M2 芯片上安装和配置 TensorFlow,助你…...
Apache Iceberg:现代数据湖存储格式的未来
Apache Iceberg 是一个开源的表格式,用于在分布式数据湖中管理大规模数据集。它由 Netflix 开发,并捐赠给 Apache 基金会。Iceberg 的设计目标是解决传统数据湖存储格式(如 Apache Hive 和 Apache Parquet)在大规模数据管理中的一…...

【离散数学·图论】(复习)
一、基本概念 1.一些基本术语: 2.点u,v邻接(或相邻): 边e称为关联顶点u和v,or e连接u和v; 3.G(V,E)中,顶点v所有邻居的集合:N(v), 成为v的邻域。 4.度 : deg(v) 5.悬挂点:度为1的…...

【ONLYOFFICE震撼8.1】ONLYOFFICE8.1版本桌面编辑器测评
随着远程工作的普及和数字化办公的发展,越来越多的人开始寻找一款具有强大功能和便捷使用的办公软件。在这个时候,ONLYOFFICE 8.1应运而生,成为了许多用户的新选择。ONLYOFFICE 8.1是一种办公套件软件,它提供了文档处理、电子表格…...
土地利用/土地覆盖遥感解译与基于CLUE模型未来变化情景预测;从基础到高级,涵盖ArcGIS数据处理、ENVI遥感解译与CLUE模型情景模拟等
🔍 土地利用/土地覆盖数据是生态、环境和气象等诸多领域模型的关键输入参数。通过遥感影像解译技术,可以精准获取历史或当前任何一个区域的土地利用/土地覆盖情况。这些数据不仅能够用于评估区域生态环境的变化趋势,还能有效评价重大生态工程…...

CMake 从 GitHub 下载第三方库并使用
有时我们希望直接使用 GitHub 上的开源库,而不想手动下载、编译和安装。 可以利用 CMake 提供的 FetchContent 模块来实现自动下载、构建和链接第三方库。 FetchContent 命令官方文档✅ 示例代码 我们将以 fmt 这个流行的格式化库为例,演示如何: 使用 FetchContent 从 GitH…...

ios苹果系统,js 滑动屏幕、锚定无效
现象:window.addEventListener监听touch无效,划不动屏幕,但是代码逻辑都有执行到。 scrollIntoView也无效。 原因:这是因为 iOS 的触摸事件处理机制和 touch-action: none 的设置有关。ios有太多得交互动作,从而会影响…...
DeepSeek 技术赋能无人农场协同作业:用 AI 重构农田管理 “神经网”
目录 一、引言二、DeepSeek 技术大揭秘2.1 核心架构解析2.2 关键技术剖析 三、智能农业无人农场协同作业现状3.1 发展现状概述3.2 协同作业模式介绍 四、DeepSeek 的 “农场奇妙游”4.1 数据处理与分析4.2 作物生长监测与预测4.3 病虫害防治4.4 农机协同作业调度 五、实际案例大…...
python报错No module named ‘tensorflow.keras‘
是由于不同版本的tensorflow下的keras所在的路径不同,结合所安装的tensorflow的目录结构修改from语句即可。 原语句: from tensorflow.keras.layers import Conv1D, MaxPooling1D, LSTM, Dense 修改后: from tensorflow.python.keras.lay…...

C# 表达式和运算符(求值顺序)
求值顺序 表达式可以由许多嵌套的子表达式构成。子表达式的求值顺序可以使表达式的最终值发生 变化。 例如,已知表达式3*52,依照子表达式的求值顺序,有两种可能的结果,如图9-3所示。 如果乘法先执行,结果是17。如果5…...

Rust 开发环境搭建
环境搭建 1、开发工具RustRover 或者vs code 2、Cygwin64 安装 https://cygwin.com/install.html 在工具终端执行: rustup toolchain install stable-x86_64-pc-windows-gnu rustup default stable-x86_64-pc-windows-gnu 2、Hello World fn main() { println…...

通过MicroSip配置自己的freeswitch服务器进行调试记录
之前用docker安装的freeswitch的,启动是正常的, 但用下面的Microsip连接不上 主要原因有可能一下几个 1、通过下面命令可以看 [rootlocalhost default]# docker exec -it freeswitch fs_cli -x "sofia status profile internal"Name …...
MFE(微前端) Module Federation:Webpack.config.js文件中每个属性的含义解释
以Module Federation 插件详为例,Webpack.config.js它可能的配置和含义如下: 前言 Module Federation 的Webpack.config.js核心配置包括: name filename(定义应用标识) remotes(引用远程模块࿰…...

《Docker》架构
文章目录 架构模式单机架构应用数据分离架构应用服务器集群架构读写分离/主从分离架构冷热分离架构垂直分库架构微服务架构容器编排架构什么是容器,docker,镜像,k8s 架构模式 单机架构 单机架构其实就是应用服务器和单机服务器都部署在同一…...