深度学习第1天:深度学习入门-Keras与典型神经网络结构

☁️主页 Nowl

🔥专栏《机器学习实战》 《机器学习》

📑君子坐而论道,少年起而行之

文章目录

神经网络

介绍

结构

基本要素

Keras

介绍

导入

定义网络

模型训练

前馈神经网络

特点

常见类型

代码示例

反馈神经网络

特点

作用

常见类型

代码示例

结语


神经网络

介绍

我们知道,深度学习也是机器学习的一个范畴,所以它满足机器学习的基本思想:从数据中拟合出某种规律 ,只是它的模型结构与经典机器学习的模型不同,且具有特色:它的模型结构像人脑的神经元一样连接,所以我们也把这种结构叫做神经网络

结构

由数个神经元组成一层,整个神经网络由多个层组成,最开始的层叫做输入层 ,最后的层叫做输出层 ,输入层与输出层中间的叫做**隐藏层,**层与层之间互相连接

基本要素

作为机器学习的一种,深度学习当然也有模型性能评估函数损失函数优化方法 ,神经网络还有一个激活函数的概念,这个激活函数添加到某个神经网络的层上,将输入经过某种函数变化后再输出,常见的激活函数有sigmoid,relu等,不用着急,这些概念我们在之后的系列文章中都会反复提到


Keras

介绍

本系列教程将主要使用Keras库进行讲解,Keras是一个流行的python深度学习库,在许多人工智能竞赛中使用量都居于领先地位

导入

python 复制代码
from keras.models import Sequential # 导入Sequential 模型
from keras.layers import Dense # 导入Dense层
import numpy as np

Sequential是一种存储神经网络的模型

Dense是全连接层,每个神经元都与上一层的所有神经元相连

定义网络

python 复制代码
model = Sequential()
model.add(Dense(6, input_dim=4, activation='relu'))
model.add(Dense(1, activation='sigmoid'))

这行代码先创建了一个Sequential模型,然后往里面添加了两个全连接层,第一个全连接层的输入是4个神经元,这一层有6个神经元,激活函数是relu,第二个全连接层只有一个神经元,而它的输入由上一层自动判断,也就是6个神经元,激活函数是sigmoid

模型训练

python 复制代码
# 编译模型
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])

# 训练模型
model.fit(X, y, epochs=10, batch_size=32)

compile初始化了一些基本设置 ,定义了损失函数(loss) ,定义了优化器(optimizer) ,定义了评估模型性能的指标(metrics)

fit开始训练模型,epochs定义了训练批次,batch_size设置了每次训练提取的样本数(深度学习训练过程每次一般都是抽取训练集的一个子集,这样做往往可以提高模型训练速度)


前馈神经网络

特点

前一个神经元的输出是后一个神经元的输入,一般结构如下图所示

常见类型

感知机,全连接神经网络,深度神经网络,卷积神经网络

代码示例

python 复制代码
from keras.models import Sequential
from keras.layers import Dense
import numpy as np

# 生成一些示例数据
X = np.random.random((1000, 20))
y = np.random.randint(2, size=(1000, 1))

# 定义简单的前馈神经网络
model = Sequential()
model.add(Dense(64, input_dim=20, activation='relu'))
model.add(Dense(1, activation='sigmoid'))

# 编译模型
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])

# 训练模型
model.fit(X, y, epochs=10, batch_size=32)

这段代码定义了一个最简单的前馈神经网络,整个模型结构有一个输入层(就是我们输入的数据,这个层没有添加到Sequential中),一个隐藏层,一个输出层


反馈神经网络

特点

某一个神经元的输入不只与前一个神经元有关,而是可能与之前的所有神经元有关

作用

反馈神经网络通常用来处理序列数据,如语音,文本等,因为这些数据通常跟前后文有关,我们需要反馈神经网络的结构来记忆前后文的关系

常见类型

循环神经网络,长短时记忆网络

代码示例

python 复制代码
from keras.models import Sequential
from keras.layers import SimpleRNN, Dense
import numpy as np

# 生成一些示例数据
X = np.random.random((1000, 10, 20))  # 1000个样本,每个样本有10个时间步,每个时间步有20个特征
y = np.random.randint(2, size=(1000, 1))

# 定义简单的反馈神经网络
model = Sequential()
model.add(SimpleRNN(64, input_shape=(10, 20), activation='relu'))
model.add(Dense(1, activation='sigmoid'))

# 编译模型
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])

# 训练模型
model.fit(X, y, epochs=10, batch_size=32)

这段代码定义了一个最简单的反馈神经网络,隐藏层为RNN层,设置时间步为10,这意味着数据会在RNN层循环十次后再输入到下一层

结语

对于深度学习,我们主要要了解以下几个方面

  • 神经网络中层与层的连接方式(前馈,反馈)
  • 各种神经网络层的作用(卷积层,池化层)
  • 激活函数(relu)
  • 损失函数
  • 优化方法
相关推荐
bluetata3 分钟前
Rokid AR眼镜开发入门:构建智能演讲提词器Android应用
android·人工智能·云计算·ar·ai编程
番茄寿司6 分钟前
基于LSTM的多变量时间序列预测创新路径
论文阅读·深度学习·计算机网络·机器学习·lstm
墨利昂10 分钟前
深度学习常用优化器解析
人工智能·深度学习·机器学习·1024程序员节
这张生成的图像能检测吗23 分钟前
(论文速读)超像素引导低光图像增强与特征恢复
图像处理·人工智能·目标检测·计算机视觉·低照度图像增强
机器之心32 分钟前
吴恩达关注的Ling-1T背后,蚂蚁Ling 2.0技术报告解密万亿模型开源配方
人工智能·openai
空白到白1 小时前
NLP相关面试题
人工智能·自然语言处理
嵌入式-老费1 小时前
Easyx图形库应用(和opencv协同)
人工智能·opencv·计算机视觉
放羊郎1 小时前
基于三维点云图的路径规划
人工智能·动态规划·slam·点云·路径规划·激光slam
算家计算1 小时前
英伟达亮出最强AI芯片!性能暴增3倍,算力竞赛迎来新节点
人工智能·nvidia·芯片
lxmyzzs1 小时前
【图像算法 - 30】基于深度学习的PCB板缺陷检测系统: YOLOv11 + UI界面 + 数据集实现
人工智能·深度学习·算法·yolo·缺陷检测