《Python 深度学习》6.2 理解循环神经网路

这篇博客介绍了如何使用Numpy实现简单的RNN,并通过TensorFlow的Keras库搭建RNN、LSTM和GRU模型进行IMDB电影评论的情感分类。文中提到,SimpleRNN在处理长序列时可能遇到梯度消失问题,而LSTM通过其特殊架构解决了这一问题。实验结果显示,LSTM模型相对于仅使用SimpleRNN的模型在处理IMDB数据集时表现出更好的性能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 1. 简单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 = []

for input_t in inputs:    # input_t: (input_features, )
    output_t = np.tanh(   # output_t: (output_features, )
        np.dot(W, input_t) + np.dot(U, state_t) + b
    )
    successive_outputs.append(output_t)
    
    state_t = output_t
    
final_output_sequence = np.stack(successive_outputs, axis=0)  # (timesteps, output_features)

print(successive_outputs[-1].shape)
print(final_output_sequence.shape)

只返回最后一个时间步的输出 

# 只返回最后一个时间步的输出

from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Embedding, SimpleRNN

model = Sequential()
model.add(Embedding(10000, 32))
model.add(SimpleRNN(32))
model.summary()

 

返回完整的状态序列

# 返回完整的状态序列

model = Sequential()
model.add(Embedding(10000, 32))
model.add(S
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值