当前位置: 首页 > news >正文

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

☁️主页 Nowl

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

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

文章目录

神经网络

介绍

结构

基本要素

Keras

介绍

导入

定义网络

模型训练

前馈神经网络

特点

常见类型

代码示例

反馈神经网络

特点

作用

常见类型

代码示例

结语


神经网络

介绍

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

结构

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

基本要素

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


Keras

介绍

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

导入

from keras.models import Sequential # 导入Sequential 模型
from keras.layers import Dense # 导入Dense层
import numpy as np

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

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

定义网络

model = Sequential()
model.add(Dense(6, input_dim=4, activation='relu'))
model.add(Dense(1, activation='sigmoid'))

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

模型训练

# 编译模型
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设置了每次训练提取的样本数(深度学习训练过程每次一般都是抽取训练集的一个子集,这样做往往可以提高模型训练速度)


前馈神经网络

特点

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

常见类型

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

代码示例

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中),一个隐藏层,一个输出层 


反馈神经网络

特点

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

作用

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

常见类型

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

代码示例

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)
  • 损失函数
  • 优化方法
http://www.lryc.cn/news/242499.html

相关文章:

  • 青云科技容器平台与星辰天合存储产品完成兼容性互认证
  • 谈谈基于Redis的分布式锁
  • 逸学java【初级菜鸟篇】10.I/O(输入/输出)
  • 【Python进阶笔记】md文档笔记第6篇:Python进程和多线程使用(图文和代码)
  • 基于Vue+SpringBoot的数字化社区网格管理系统
  • 【数据库设计和SQL基础语法】--数据库设计基础--数据建模与ER图
  • Vue3 设置点击后滚动条移动到固定的位置
  • 外部 prometheus监控k8s集群资源(pod、CPU、service、namespace、deployment等)
  • LLMLingua:集成LlamaIndex,对提示进行压缩,提供大语言模型的高效推理
  • 数据资产确权的难点
  • EMG肌肉电信号处理合集(二)
  • 2023亚马逊云科技re:Invent引领科技新潮流:云计算与生成式AI共塑未来
  • 案例018:基于微信小程序的实习记录系统
  • 视频剪辑技巧:如何高效批量转码MP4视频为MOV格式
  • node.js获取unsplash图片
  • Git远程库操作(GitHub)
  • java计算下一个整10分钟时间点
  • 力扣刷题篇之排序算法
  • 一键填充字幕——Arctime pro
  • 间隔分区表(DM8:达梦数据库)
  • 基于C#实现并查集
  • opencv-图像轮廓
  • 小黑子—Maven高级
  • 一个正整数转为2进制和8进制,1的个数相同的第23个数是什么?
  • Unity阻止射线穿透UI的方法之一
  • HarmonyOS开发:ArkTs常见数据类型
  • Unsupervised MVS论文笔记
  • Matplotlib图形注释_Python数据分析与可视化
  • 如何把A3 pdf 文章打印成A4
  • 【Vue】vue指令