LSTM基础知识(壹)

LSTM基础知识(壹)
环境:windows,anaconda,tensorflow2.0
内容:主要是针对常用的API参数理解
最近学习RNN,最典型的模型LSTM,发现常用的API的参数设置对应不上数据集,找了很多资料,才理清,记录和分享给和我一样的小白
这里分享一个bili的一个up主讲的很基础,也很明白:
https://www.bilibili.com/video/BV1Ui4y1j7BH?from=search&seid=5582451721315138871

在tensorflow2.0中直接可以通过tensorflow.keras模块调用LSTM:`

import tensorflow
from tensorflow.keras import layers
layer_lstm = layers.LSTM(30)

模型搭建需要设置输入:

# input_x.shape:[batch,lens,features]
input_x = tensorflow.random.uniform((32,50,40))
out_y = lstm_layer(input_x)
print(out_y.shape)

#结果
#(32, 30)

这里假设一段话有32个句子,每个句子有50个词,每个词有40个词向量,得到结果是(32,30),32是输入,30是输出。
第二个参数:return_state默认是False,如果设置成True,则会返回其他两个输出,可以看到数据维度和输出out_y2是一样的。

lstm2 = layers.LSTM(30,return_state = True)
out_y2,state_h,state_c = lstm2(input_x)
print(out_y2.shape)
print(state_h.shape)
print(state_c.shape)

输出:

runfile('E:/job_x/practice_LSTM.py', wdir='E:/job_x')
(32, 30)
(32, 30)
(32, 30)

对应到原理中,如图:
在这里插入图片描述

第三个参数:state_sequences默认是False,如果改成True,则会返回每一次运算的结果

lstm3 = layers.LSTM(30,return_sequences = True)
out_y3 = lstm3(input_x)
print(out_y3.shape)

结果:

runfile('E:/job_x/practice_LSTM.py', wdir='E:/job_x')
(32, 50, 30)

发现多了一个50的参数,刚好和输出的维度式样的。
这里可以看到和第一个其实就是设置了state_sequences,对应如下图:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值