递归神经网络 训练、推到、实现(网络资料整理)

本文深入探讨了循环神经网络(RNN)的工作原理,包括神经元记忆、基于时间的反向传播和RNN的实现。通过一个简单的二进制加法问题的Python代码示例,阐述了RNN如何利用隐藏层来处理序列数据,以及如何通过反向传播进行学习。文章还指出,隐藏层循环使得网络能够记住序列信息,而输入层循环则无法提供这种长期依赖性。最后,展示了RNN在解决序列预测任务时如何处理记忆和遗忘的问题。

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

参考:

RNN求解过程推导与实现

人人都能用Python写出LSTM-RNN的代码![你的神经网络学习最佳起步]

Hinton 的课件

我的最佳学习法就是通过玩具代码,一边调试一边学习理论。这篇博客通过一个非常简单的python玩具代码来讲解循环神经网络。

[python] view plain copy

  1. import copy, numpy as np  
  2. np.random.seed(0)  
  3.   
  4. # compute sigmoid nonlinearity  
  5. def sigmoid(x):  
  6.     output = 1/(1+np.exp(-x))  
  7.     return output  
  8.   
  9. # convert output of sigmoid function to its derivative  
  10. def sigmoid_output_to_derivative(output):  
  11.     return output*(1-output)  
  12.   
  13.   
  14. # training dataset generation  
  15. int2binary = {}  
  16. binary_dim = 8  
  17.   
  18. largest_number = pow(2,binary_dim)  
  19. binary = np.unpackbits(  
  20.     np.array([range(largest_number)],dtype=np.uint8).T,axis=1)  
  21. for i in range(largest_number):  
  22.     int2binary[i] = binary[i]  
  23.   
  24.   
  25. # input variables  
  26. alpha = 0.1  
  27. input_dim = 2  
  28. hidden_dim = 16  
  29. output_dim = 1  
  30.   
  31.   
  32. # initialize neural network weights  
  33. synapse_0 = 2*np.random.random((input_dim,hidden_dim)) - 1  
  34. synapse_1 = 2*np.random.random((hidden_dim,output_dim)) - 1  
  35. synapse_h = 2*np.random.random((hidden_dim,hidden_dim)) - 1  
  36.   
  37. synapse_0_update = np.zeros_like(synapse_0)  
  38. synapse_1_update = np.zeros_like(synapse_1)  
  39. synapse_h_update = np.zeros_like(synapse_h)  
  40.   
  41. # training logic  
  42. for j in range(10000):  
  43.       
  44.     # generate a simple addition problem (a + b = c)  
  45.     a_int = np.random.randint(largest_number/2) # int version  
  46.     a = int2binary[a_int] # binary encoding  
  47.   
  48.     b_int = np.random.randint(largest_number/2) # int version  
  49.     b = int2binary[b_int] # binary encoding  
  50.   
  51.   
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值