循环神经网络(RNN,recurrent neural network)

瘦欲@ 提交于 2020-01-29 05:14:09

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)
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!