归来的第一天

侃侃而谈

离开博园已经许久了,最开始使用博园是本科时候,大学班主任给我们上C++课程时候开启的,那时候还觉得很麻烦,没事写什么博客啊,无聊。
今年刚刚本科毕业,从福州大学毕业了,现在是华南理工计算机系的一名研究生。从去年的3月份开始准备考研,到12月月底的初试,再到2月份出成绩,然后因为疫情,复试一直拖着拖到了5月份。时间好快,现在已经是2020/9/24, 19:43了。去年一年不负努力,初试第四,复试之后,综合排名第七进入了华南理工大学计算机专业。现在已经开学的第三个礼拜了,也是心血来潮觉得应该写点东西,也不是心血来潮,因为感觉应该记录一下自己的生活、困难和解决办法。


谈谈遇到的困难

研究生入学开始,就开启了DL/ML指旅了,最近除了上课都在学习pytorch的模型怎么使用。因为暑假的时候,已经看了吴恩达的ML/DL系列的视频及笔记、西瓜书,但是西瓜书的公式推导看的头疼,实在是只能看看文字的层面。之后还看了深度学习四大名著中的两本:1. Python深度学习(Keras+)2018.08。2. Hands on Machine Learning with Scikit Learn and TensorFlow - 中文版。觉得自己理论知识应该是有一点储备了,加上暑假的时候做了近视激光手术手术,也只看书,没有敲代码,现在在补上自己的代码缺失了。这几天学pytorch框架,学得有点一言难尽,也有点快乐吧。(代码弱鸡、在线哭泣

有个问题从昨天到今天一直在困扰我,总算在今天解决了


问题就是:LSTM的参数个数怎么算?

百度的时候,大多都是一个公式:输入特征m,隐藏层特征是n,有k层,那答案就是4((m+n)m+m)*k,但是我用pytorch组建的一个简单模型,用这个公式算出来的答案是错误的。
LSTM的模型如下:

self.lstm = nn.LSTM(input_size=3, hidden_size=3, num_layers=5, batch_first=True)

按照上面的公式的话,我的模型m=3,n=3,k=5。算出来答案应该是4((3+3)3+3)*5=420,但是查看模型的时候显示的是480,那是哪里不对呢?

我从昨天看各种CSDN博客都没有解决我的问题。最后是在官方API里找到了答案。首先看官网文档的LSTM公式

可以看出,pytorch的LSTM模型,每个公式里面的偏置值是两个不是一个,所以正确的算法是4((3+3)3+3+3)*5=480,这个时候答案就对了。


片尾

其实这个问题困扰了两天了,昨天睡觉前都还在想是为什么,然后怕以后忘记了吧,想着择日不如撞日,从今天再次开启我的博客园,以后做到每周都写两三篇,做做总结,做做计划,加油!

原文地址:https://www.cnblogs.com/nanjibin/p/13726353.html