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

简介: 深度学习第1天:深度学习入门-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)
  • 损失函数
  • 优化方法
相关文章
|
6天前
|
机器学习/深度学习 PyTorch 算法框架/工具
深度学习的最佳入门路线
深度学习的最佳入门路线
|
6天前
|
机器学习/深度学习 自然语言处理 语音技术
深度学习500问——Chapter06: 循环神经网络(RNN)(3)
深度学习500问——Chapter06: 循环神经网络(RNN)(3)
19 3
|
3天前
|
机器学习/深度学习 数据可视化 TensorFlow
使用TensorFlow进行深度学习入门
【5月更文挑战第18天】本文介绍了TensorFlow深度学习入门,包括TensorFlow的概述和一个简单的CNN手写数字识别例子。TensorFlow是由谷歌开发的开源机器学习框架,以其灵活性、可扩展性和高效性著称。文中展示了如何安装TensorFlow,加载MNIST数据集,构建并编译CNN模型,以及训练和评估模型。此外,还提供了预测及可视化结果的代码示例。
|
4天前
|
机器学习/深度学习 JSON PyTorch
图神经网络入门示例:使用PyTorch Geometric 进行节点分类
本文介绍了如何使用PyTorch处理同构图数据进行节点分类。首先,数据集来自Facebook Large Page-Page Network,包含22,470个页面,分为四类,具有不同大小的特征向量。为训练神经网络,需创建PyTorch Data对象,涉及读取CSV和JSON文件,处理不一致的特征向量大小并进行归一化。接着,加载边数据以构建图。通过`Data`对象创建同构图,之后数据被分为70%训练集和30%测试集。训练了两种模型:MLP和GCN。GCN在测试集上实现了80%的准确率,优于MLP的46%,展示了利用图信息的优势。
10 1
|
6天前
|
机器学习/深度学习 算法 Go
YOLOv5网络结构解析
YOLOv5网络结构解析
|
6天前
|
机器学习/深度学习 人工智能 自然语言处理
一文搞懂深度学习:神经网络基础部分
一文搞懂深度学习:神经网络基础部分
11 0
|
6天前
|
机器学习/深度学习 算法 PyTorch
卷积神经网络的结构组成与解释(详细介绍)
卷积神经网络的结构组成与解释(详细介绍)
25 0
|
6天前
|
机器学习/深度学习 算法 Scala
深度学习500问——Chapter06: 循环神经网络(RNN)(4)
深度学习500问——Chapter06: 循环神经网络(RNN)(4)
21 1
|
6天前
|
机器学习/深度学习 算法 搜索推荐
深度学习500问——Chapter06: 循环神经网络(RNN)(2)
深度学习500问——Chapter06: 循环神经网络(RNN)(2)
17 3
|
6天前
|
机器学习/深度学习 存储 自然语言处理
深度学习500问——Chapter06: 循环神经网络(RNN)(1)
深度学习500问——Chapter06: 循环神经网络(RNN)(1)
10 1

热门文章

最新文章