1 用numpy实现RNN
循环神经网络(Recurrent Neural Network,RNN)是一类专门用于处理时序数据样本的神经网络,它的每一层不仅输出给下一层,同时还输出一个隐状态,给当前层在处理下一个样本时使用。
# 简单RNN的Numpy实现
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)
来源:CSDN
作者:天青如水
链接:https://blog.csdn.net/qq_16829085/article/details/103656304