郑州营销网站建设公司,dw做网站需要数据库么,建设银行的网站用户名是什么,如何用html做班级网站☁️主页 Nowl
#x1f525;专栏《机器学习实战》 《机器学习》
#x1f4d1;君子坐而论道#xff0c;少年起而行之 文章目录
介绍
记忆功能对比展现
任务描述
导入库
处理数据
前馈神经网络
循环神经网络
编译与训练模型
模型预测
可能的问题
梯度消失
梯… ☁️主页 Nowl
专栏《机器学习实战》 《机器学习》
君子坐而论道少年起而行之 文章目录
介绍
记忆功能对比展现
任务描述
导入库
处理数据
前馈神经网络
循环神经网络
编译与训练模型
模型预测
可能的问题
梯度消失
梯度爆炸
其他的循环神经网络
结语 介绍 RNN也叫循环神经网络普通的神经网络层的输入都是上一层的输出而循环神经网络会在RNN层循环指定次数这样的特点使得RNN在处理序列数据上表现得很好因为它可以更好地记住前后文的关系 记忆功能对比展现
任务描述
我们有一段数字序列我们训练一个神经网络使得该模型能通过任意连在一起的两个数判断出第三个数
我们先定义数字序列
data_sequence [1, 3, 5, 2, 4, 9, 7, 6, 8]
导入库
import numpy as np
from keras.models import Sequential
from keras.layers import SimpleRNN, Dense
处理数据
# 准备训练数据使用前两个数字作为输入预测第三个数字以此类推
X []
y []for i in range(len(data_sequence)-2):X.append([data_sequence[i], data_sequence[i1]])y.append(data_sequence[i2])X np.array(X)
y np.array(y)# 转换数据形状以适应RNN
X X.reshape((X.shape[0], X.shape[1], 1))
我们打印X得到下图结果结果竖向排列无法展示完全X的形状为7 2 1两两排列有七组数据每组数据两个特征每个特征单独输入 打印y 为每两个数的第三个数
前馈神经网络
接下来我们定义一个简单的前馈神经网络
model Sequential()
model.add(Dense(500, input_dim2))
model.add(Dense(1)) 该模型有三层输入层没有在这里定义我们等下输入的数据就充当这一层一个500个神经元的线性层输入维度为二一个输出维度为1的输出层输入维度为上一层神经元的个数即500
循环神经网络
定义一个循环神经网络
# 创建RNN模型
model Sequential()
model.add(SimpleRNN(500, input_shape(2, 1)))
model.add(Dense(1)) 该模型有三层输入层没有在这里定义我们等下输入的数据就充当这一层一个500个神经元的RNN层input_shape21的意思是时间步为2每个时间步有一个数据可以理解时间步为网络记忆的长度一个输出维度为1的输出层输入维度为上一层神经元的个数即500
编译与训练模型
# 编译模型
model.compile(optimizeradam, lossmse)# 训练模型
model.fit(X, y, epochs200, batch_size1, verbose2)
编译阶段设置模型的优化器为adam损失函数为mse训练部分设置模型训练数据Xy设置训练回合为200次批次为1即一次输入一组数据verbose决定了是否打印训练过程中的信息。verbose2 表示打印每个 epoch 的信息包括损失值和其他指标。verbose0表示不打印任何信息verbose1表示打印进度条。
模型预测
接下来看看在相同神经元数量和相同训练批次上谁的效果更好吧
# 使用模型进行预测
input_data np.array([[data_sequence[2], data_sequence[3]]])
predicted_value model.predict(input_data)[0, 0]# 打印预测结果
print(f输入序列: {data_sequence[2:4]}预测下一个数字: {predicted_value}) 我们训练后使用5 2进行预测查看原始数据我们知道下一个数字应该是4让我们看看两个模型运行的结果吧
前馈神经网络 循环神经网络 可以看到循环神经网络的效果更优
可能的问题 梯度消失 当在网络的反向传播过程中梯度逐渐减小到几乎为零时就会出现梯度消失问题。这使得网络难以学习到远距离时间步的依赖关系因为在反向传播时较早时间步的信息无法有效传递给较晚时间步。 梯度爆炸 相反梯度爆炸是指在反向传播中梯度变得非常大这可能导致权重更新变得非常大模型不稳定。这可能导致数值溢出和无法收敛。 这两个问题在神经网络中都会出现只是由于RNN的结构梯度消失与梯度爆炸问题会更加显著
其他的循环神经网络
LSTMLSTM引入了三个门门是一种控制信息流动的机制来控制信息的输入、输出和遗忘。GRUGRU是对LSTM的一种简化版本它只包含两个门更新门Update Gate和重置门Reset Gate。
这两种循环神经网络能有效地应对梯度消失和梯度爆炸的问题这里先做了解之后会具体介绍
结语
循环神经网络是深度学习中一种重要的结构一般用来处理文本语音的序列数据我们通过一个比较直观地感受到了RNN的记忆功能梯度消失与梯度爆炸问题在RNN中更加显著 感谢阅读觉得有用的话就订阅下本专栏吧