keras 多层lstm_Keras代码超详细讲解LSTM实现细节

本文详细介绍了如何在Keras中使用Embedding层和LSTM层进行序列数据处理。通过实例展示了如何初始化Embedding层,包括随机初始化和使用预训练的embedding矩阵。接着,解释了LSTM层的参数`return_sequences`和`return_state`的区别,并通过不同设置的实例进行了说明。
摘要由CSDN通过智能技术生成

1.首先我们了解一下keras中的Embedding层:from keras.layers.embeddings import Embedding:

Embedding参数如下:

输入尺寸:(batch_size,input_length)

输出尺寸:(batch_size,input_length,output_dim)

举个例子:(随机初始化Embedding):

fromkeras.models import Sequentialfromkeras.layers import Embedding

import numpyasnp

model=Sequential()

model.add(Embedding(1000, 64, input_length=10))

# 输入大小为(None,10),Nnoe是batch_size大小,10代表每一个batch中有10条样本# 输出大小为(None, 10, 64),其中64代表输入中每个每条样本被embedding成了64维的向量input_array= np.random.randint(1000, size=(32, 10))

model.compile('rmsprop', 'mse')

output_array=model.predict(input_array)

print(output_array)

assert output_array.shape== (32, 10, 64)

具体可以看下面的例子:

fromkeras.models import Sequentialfromkeras.layers import Flatten, Dense, Embedding

import numpyasnp

model=Sequential()

model.add(Embedding(3, 2, input_length=7))

#通俗的讲,这个过程中,Embedding层生成了一个大小为3*2的随机矩阵(3代表词汇表大小,,2代表没个词embedding后的向量大小),记为M,查看矩阵M:

model.layers[0].get_weights()

#输出

[array([[-0.00732628, -0.02913231],

[0.00573028, 0.0329752],

[-0.0401206 , -0.01729034]], dtype=float32)]

矩阵的每一行是该行下标指示的标记的数值向量,即矩阵M的第i(0,1,2)行是index为i的单词对应的数值向量,比如说,我的输入如果index=1,则对应的embedding向量=[ 0.00573028, 0.0329752 ],具体看下面:

data = np.array([[0,1,2,1,1,0,1],[0,1,2,1,1,0,1]]

model.predict(data)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值