Open Yukyukuon opened 3 months ago
第六章第二节 循环神经网络(Recurrent neural networks)
循环神经网络(RNN,recurrent neural network):它处理序列的方式是,遍历所有序列元素,并保存一个状态(state),其中包含与已查看内容相关的信息。实际上,RNN 是一类具有内部环的神经网络。在处理两个不同的独立序列(比如两条不同的IMDB 评论)之间,RNN 状态会被重置,因此,你仍可以将一个序列看作单个数据点,即网络的单个输入。真正改变的是,数据点不再是在单个步骤中进行处理,相反,网络内部会对序列元素进行遍历。
参数计算:
需要计算的:
import numpy as np timesteps = 100 # 输入序列的时间步数 input_features = 32 # 输入特征空间的维度 output_features = 64 # 输出特征空间的维度 inputs = np.random.random((timesteps, input_features)) #初始状态:全零向量 state_t = np.zeros((output_features,)) #如上要估计的三个参数,创建随机的权重矩阵 W = np.random.random((output_features, input_features)) U = np.random.random((output_features, output_features)) b = np.random.random((output_features,)) successive_outputs = [] #input_t 是形状为(input_features,) 的向量 for input_t in inputs: # 由输入和当前状态(前一个输出)计算得到当前输出 output_t = np.tanh(np.dot(W, input_t) + np.dot(U, state_t) + b) successive_outputs.append(output_t) state_t = output_t # 更新网络的状态,用于下一个时间步 # 最终输出是一个形状为(timesteps,output_features) 的二维张量 final_output_sequence = np.stack(successive_outputs, axis=0)
SimpleRNN 通常过于简化,会有梯度消失问题(vanishing gradient problem),这一效应类似于在层数较多的非循环网络(即前馈网络)中观察到的效应:随着层数的增加,网络最终变得无法训练。
需要4倍的SimpleRNN层的参数
输出
备注
sigmoid function(0~1之间)
hyperbolic tangent function(-1~1之间)
Keras 中的LSTM 层
from keras.layers import LSTM model = Sequential() model.add(Embedding(max_features, 32)) model.add(LSTM(32)) model.add(Dense(1, activation='sigmoid')) model.compile(optimizer='rmsprop', loss='binary_crossentropy', metrics=['acc']) history = model.fit(input_train, y_train, epochs=10, batch_size=128, validation_split=0.2)
参数计算
🎉
第六章第二节 循环神经网络(Recurrent neural networks)
循环神经网络(RNN,recurrent neural network):它处理序列的方式是,遍历所有序列元素,并保存一个状态(state),其中包含与已查看内容相关的信息。实际上,RNN 是一类具有内部环的神经网络。在处理两个不同的独立序列(比如两条不同的IMDB 评论)之间,RNN 状态会被重置,因此,你仍可以将一个序列看作单个数据点,即网络的单个输入。真正改变的是,数据点不再是在单个步骤中进行处理,相反,网络内部会对序列元素进行遍历。
SimpleRNN
参数计算:
需要计算的:
RNN 的Numpy 实现
LSTM (long short-term memory)
SimpleRNN 通常过于简化,会有梯度消失问题(vanishing gradient problem),这一效应类似于在层数较多的非循环网络(即前馈网络)中观察到的效应:随着层数的增加,网络最终变得无法训练。
参数计算:
输出
备注
sigmoid function(0~1之间)
hyperbolic tangent function(-1~1之间)
Keras 中的LSTM 层
GRU(Gated recurrent unit)
参数计算
输出